Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions rcav2/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ def __init__(
self.logjuicer_report: rcav2.models.errors.Report | None = None
self.zuul_info: ZuulInfo | None = None
self.zuul_info_age = 0.0
self.repo_age = 0.0
self.httpx = make_httpx_client(
settings.SF_DOMAIN, settings.CA_BUNDLE_PATH, settings.COOKIE_FILE
)
Expand Down Expand Up @@ -70,6 +71,14 @@ def __init__(
settings.SLACK_API_KEY, settings.SLACK_SEARCH_CHANNELS
)

def repo_need_update(self):
"""Return True if repo_age is older than 1 hour"""
now = time.time()
if now - self.repo_age > 3600:
self.repo_age = now
return True
return False

def close(self):
if self.cookie and self.cookie_path:
with open(self.cookie_path, "w") as f:
Expand Down
4 changes: 2 additions & 2 deletions rcav2/tools/zuul.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,15 @@ def as_list(item: str | list[str]) -> list[str]:
return item


async def get_job_playbooks(info: ZuulInfo, job_name: str):
async def get_job_playbooks(info: ZuulInfo, job_name: str, update: bool = False):
plays: list[Path] = []
while True:
job = info.jobs.get(job_name)
if not job:
print(f"Unknown job: {job_name}")
break
if url := info.project_git(job.project):
path = await rcav2.tools.git.ensure_repo(url)
path = await rcav2.tools.git.ensure_repo(url, update)
if job_def := read_job(path / job.path, job_name):
plays.extend(
map(lambda play: path / play, as_list(job_def.get("run", [])))
Expand Down
3 changes: 2 additions & 1 deletion rcav2/workflows.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ def load_job_description_file(dfile) -> str | None:
async def job_from_model(env: Env, name: str, worker: Worker) -> Job | None:
await worker.emit("Reading job plays...", event="progress")
zuul_info = await rcav2.tools.zuul.ensure_zuul_info(env)
plays = await rcav2.tools.zuul.get_job_playbooks(zuul_info, name)
update = env.repo_need_update()
plays = await rcav2.tools.zuul.get_job_playbooks(zuul_info, name, update)
if not plays:
await worker.emit(f"Couldn't find job {name}", event="error")
return None
Expand Down