mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 13:50:11 +01:00
ci,marge_queue: encapsulate GitLab module queries
For testing and an eventual use of tenacity, it is practical to encapsulate calls to the GitLab module in methods. Signed-off-by: Sergi Blanch Torne <sergi.blanch.torne@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37395>
This commit is contained in:
parent
e2acf0934b
commit
b80a93dac0
1 changed files with 29 additions and 13 deletions
|
|
@ -18,6 +18,7 @@ from dateutil import parser
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import gitlab
|
import gitlab
|
||||||
|
from gitlab.base import RESTObjectList
|
||||||
from gitlab.v4.objects import Project, ProjectMergeRequest
|
from gitlab.v4.objects import Project, ProjectMergeRequest
|
||||||
from gitlab_common import read_token, pretty_duration
|
from gitlab_common import read_token, pretty_duration
|
||||||
|
|
||||||
|
|
@ -56,11 +57,7 @@ class MargeMergeRequest:
|
||||||
self.assigned_at = self.__find_last_assign_to_marge()
|
self.assigned_at = self.__find_last_assign_to_marge()
|
||||||
|
|
||||||
def __find_last_assign_to_marge(self) -> Optional[datetime]:
|
def __find_last_assign_to_marge(self) -> Optional[datetime]:
|
||||||
for note in self.mr.notes.list(
|
for note in self.__get_mr_notes_iterator():
|
||||||
iterator=True,
|
|
||||||
order_by="updated_at",
|
|
||||||
sort="desc"
|
|
||||||
): # start with the most recent
|
|
||||||
if note.body.startswith(ASSIGNED_TO_MARGE):
|
if note.body.startswith(ASSIGNED_TO_MARGE):
|
||||||
return parser.parse(note.created_at)
|
return parser.parse(note.created_at)
|
||||||
|
|
||||||
|
|
@ -81,6 +78,11 @@ class MargeMergeRequest:
|
||||||
def title(self) -> str:
|
def title(self) -> str:
|
||||||
return self.mr.title
|
return self.mr.title
|
||||||
|
|
||||||
|
def __get_mr_notes_iterator(self) -> RESTObjectList:
|
||||||
|
return self.mr.notes.list(
|
||||||
|
iterator=True, order_by="updated_at", sort="desc"
|
||||||
|
) # start with the most recent
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class MargeQueue:
|
class MargeQueue:
|
||||||
|
|
@ -126,12 +128,7 @@ class MargeQueue:
|
||||||
|
|
||||||
def get_merge_queue(project: Project) -> MargeQueue:
|
def get_merge_queue(project: Project) -> MargeQueue:
|
||||||
queue = MargeQueue()
|
queue = MargeQueue()
|
||||||
for mr in project.mergerequests.list(
|
for mr in __get_project_marge_merge_requests(project):
|
||||||
assignee_id=MARGE_BOT_USER_ID,
|
|
||||||
scope="all",
|
|
||||||
state="opened",
|
|
||||||
get_all=True,
|
|
||||||
):
|
|
||||||
marge_merge_request = MargeMergeRequest(mr)
|
marge_merge_request = MargeMergeRequest(mr)
|
||||||
queue.append(marge_merge_request)
|
queue.append(marge_merge_request)
|
||||||
for mr in queue.sorted_queue:
|
for mr in queue.sorted_queue:
|
||||||
|
|
@ -152,12 +149,31 @@ def get_merge_queue(project: Project) -> MargeQueue:
|
||||||
return queue
|
return queue
|
||||||
|
|
||||||
|
|
||||||
|
def __get_gitlab_object(token: str) -> gitlab.Gitlab:
|
||||||
|
return gitlab.Gitlab(url="https://gitlab.freedesktop.org", private_token=token, retry_transient_errors=True)
|
||||||
|
|
||||||
|
|
||||||
|
def __get_gitlab_project(gl: gitlab.Gitlab) -> Project:
|
||||||
|
return gl.projects.get("mesa/mesa")
|
||||||
|
|
||||||
|
|
||||||
|
def __get_project_marge_merge_requests(
|
||||||
|
project: Project
|
||||||
|
) -> list[ProjectMergeRequest]:
|
||||||
|
return project.mergerequests.list(
|
||||||
|
assignee_id=MARGE_BOT_USER_ID,
|
||||||
|
scope="all",
|
||||||
|
state="opened",
|
||||||
|
get_all=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
token = read_token(args.token)
|
token = read_token(args.token)
|
||||||
gl = gitlab.Gitlab(url="https://gitlab.freedesktop.org", private_token=token, retry_transient_errors=True)
|
gl = __get_gitlab_object(token)
|
||||||
|
|
||||||
project = gl.projects.get("mesa/mesa")
|
project = __get_gitlab_project(gl)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
n_mrs = get_merge_queue(project).n_merge_requests_enqueued
|
n_mrs = get_merge_queue(project).n_merge_requests_enqueued
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue