diff --git a/zuul/driver/gerrit/gerritsource.py b/zuul/driver/gerrit/gerritsource.py index a59781d097..fde0bf9284 100644 --- a/zuul/driver/gerrit/gerritsource.py +++ b/zuul/driver/gerrit/gerritsource.py @@ -55,7 +55,7 @@ class GerritSource(BaseSource): def getChange(self, event, refresh=False): return self.connection.getChange(event, refresh) - def getChangeByURL(self, url): + def getChangeByURL(self, url, event): try: parsed = urllib.parse.urlparse(url) except ValueError: @@ -71,11 +71,12 @@ class GerritSource(BaseSource): except ValueError: return None query = "change:%s" % (change_no,) - results = self.connection.simpleQuery(query) + results = self.connection.simpleQuery(query, event=event) if not results: return None change = self.connection._getChange( - results[0].number, results[0].current_patchset) + results[0].number, results[0].current_patchset, + event=event) return change def getChangesDependingOn(self, change, projects, tenant): diff --git a/zuul/driver/git/gitsource.py b/zuul/driver/git/gitsource.py index d387c787ec..f5c2c07f8c 100644 --- a/zuul/driver/git/gitsource.py +++ b/zuul/driver/git/gitsource.py @@ -38,7 +38,7 @@ class GitSource(BaseSource): def getChange(self, event, refresh=False): return self.connection.getChange(event, refresh) - def getChangeByURL(self, url): + def getChangeByURL(self, url, event): return None def getChangesDependingOn(self, change, projects, tenant): diff --git a/zuul/driver/github/githubsource.py b/zuul/driver/github/githubsource.py index 2b647b6838..95cc64f8f2 100644 --- a/zuul/driver/github/githubsource.py +++ b/zuul/driver/github/githubsource.py @@ -67,7 +67,7 @@ class GithubSource(BaseSource): change_re = re.compile(r"/(.*?)/(.*?)/pull/(\d+)[\w]*") - def getChangeByURL(self, url): + def getChangeByURL(self, url, event): try: parsed = urllib.parse.urlparse(url) except ValueError: @@ -81,14 +81,16 @@ class GithubSource(BaseSource): num = int(m.group(3)) except ValueError: return None - pull, pr_obj = self.connection.getPull('%s/%s' % (org, proj), int(num)) + pull, pr_obj = self.connection.getPull( + '%s/%s' % (org, proj), int(num), event=event) if not pull: return None proj = pull.get('base').get('repo').get('full_name') project = self.getProject(proj) change = self.connection._getChange( project, num, - patchset=pull.get('head').get('sha')) + patchset=pull.get('head').get('sha'), + event=event) return change def getChangesDependingOn(self, change, projects, tenant): diff --git a/zuul/driver/gitlab/gitlabsource.py b/zuul/driver/gitlab/gitlabsource.py index 913d1e6001..985d6618bf 100644 --- a/zuul/driver/gitlab/gitlabsource.py +++ b/zuul/driver/gitlab/gitlabsource.py @@ -55,7 +55,7 @@ class GitlabSource(BaseSource): def getChange(self, event, refresh=False): return self.connection.getChange(event, refresh) - def getChangeByURL(self, url): + def getChangeByURL(self, url, event): try: parsed = urllib.parse.urlparse(url) except ValueError: @@ -68,12 +68,13 @@ class GitlabSource(BaseSource): num = int(m.group(2)) except ValueError: return None - mr = self.connection.getPull(project_name, num) + mr = self.connection.getPull(project_name, num, event=event) if not mr: return None project = self.getProject(project_name) change = self.connection._getChange( - project, num, mr['sha'], url=url) + project, num, mr['sha'], url=url, + event=event) return change def getChangesDependingOn(self, change, projects, tenant): diff --git a/zuul/driver/pagure/pagureconnection.py b/zuul/driver/pagure/pagureconnection.py index f10b3f62ac..4e30768adf 100644 --- a/zuul/driver/pagure/pagureconnection.py +++ b/zuul/driver/pagure/pagureconnection.py @@ -753,12 +753,13 @@ class PagureConnection(BaseConnection): change.project.name, change.number, can_merge) return can_merge - def getPull(self, project_name, number): + def getPull(self, project_name, number, event=None): + log = get_annotated_logger(self.log, event=event) pagure = self.get_project_api_client(project_name) pr = pagure.get_pr(number) diffstats = pagure.get_pr_diffstats(number) pr['files'] = list(diffstats.keys()) - self.log.info('Got PR %s#%s', project_name, number) + log.info('Got PR %s#%s', project_name, number) return pr def getStatus(self, project, number): diff --git a/zuul/driver/pagure/paguresource.py b/zuul/driver/pagure/paguresource.py index 8fbb50bacf..6c459e2ded 100644 --- a/zuul/driver/pagure/paguresource.py +++ b/zuul/driver/pagure/paguresource.py @@ -62,7 +62,7 @@ class PagureSource(BaseSource): def getChange(self, event, refresh=False): return self.connection.getChange(event, refresh) - def getChangeByURL(self, url): + def getChangeByURL(self, url, event): try: parsed = urllib.parse.urlparse(url) except ValueError: @@ -75,14 +75,15 @@ class PagureSource(BaseSource): num = int(m.group(2)) except ValueError: return None - pull = self.connection.getPull(project_name, num) + pull = self.connection.getPull(project_name, num, event=event) if not pull: return None project = self.getProject(project_name) change = self.connection._getChange( project, num, patchset=pull.get('commit_stop'), - url=url) + url=url, + event=event) return change def getChangesDependingOn(self, change, projects, tenant): diff --git a/zuul/manager/__init__.py b/zuul/manager/__init__.py index d313ca1787..36183b6c80 100644 --- a/zuul/manager/__init__.py +++ b/zuul/manager/__init__.py @@ -445,7 +445,7 @@ class PipelineManager(metaclass=ABCMeta): if not source: continue log.debug(" Found source: %s", source) - dep = source.getChangeByURL(match) + dep = source.getChangeByURL(match, event) if dep and (not dep.is_merged) and dep not in dependencies: log.debug(" Adding dependency: %s", dep) dependencies.append(dep) diff --git a/zuul/source/__init__.py b/zuul/source/__init__.py index 4402a5ed28..40a739b91b 100644 --- a/zuul/source/__init__.py +++ b/zuul/source/__init__.py @@ -59,7 +59,7 @@ class BaseSource(object, metaclass=abc.ABCMeta): """ @abc.abstractmethod - def getChangeByURL(self, url): + def getChangeByURL(self, url, event): """Get the change corresponding to the supplied URL. The URL may may not correspond to this source; if it doesn't,