Skip to content

Commit

Permalink
feat: Support multiple projects
Browse files Browse the repository at this point in the history
  • Loading branch information
jopemachine committed Aug 5, 2024
1 parent 45fef0b commit e88690a
Showing 1 changed file with 32 additions and 29 deletions.
61 changes: 32 additions & 29 deletions src/ai/backend/manager/container_registry/gitlab.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,33 +21,36 @@ async def fetch_repositories(self, sess: aiohttp.ClientSession) -> AsyncIterator
self.registry_info["gitlab_project"],
)

encoded_project_id = urllib.parse.quote(f"{name}/{gitlab_project}", safe="")
repo_list_url = (
f"https://gitlab.com/api/v4/projects/{encoded_project_id}/registry/repositories"
)

headers = {
"Accept": "application/json",
"PRIVATE-TOKEN": access_token,
}
page = 1

while True:
async with sess.get(
repo_list_url,
headers=headers,
params={"per_page": 30, "page": page},
) as response:
if response.status == 200:
data = await response.json()

for repo in data:
yield repo["path"]
if "next" in response.headers.get("Link", ""):
page += 1
projects = gitlab_project.split(",")

for project in projects:
encoded_project_id = urllib.parse.quote(f"{name}/{project}", safe="")
repo_list_url = (
f"https://gitlab.com/api/v4/projects/{encoded_project_id}/registry/repositories"
)

headers = {
"Accept": "application/json",
"PRIVATE-TOKEN": access_token,
}
page = 1

while True:
async with sess.get(
repo_list_url,
headers=headers,
params={"per_page": 30, "page": page},
) as response:
if response.status == 200:
data = await response.json()

for repo in data:
yield repo["path"]
if "next" in response.headers.get("Link", ""):
page += 1
else:
break
else:
break
else:
raise RuntimeError(
f"Failed to fetch repositories! {response.status} error occurred."
)
raise RuntimeError(
f"Failed to fetch repositories for project {project}! {response.status} error occurred."
)

0 comments on commit e88690a

Please sign in to comment.