summaryrefslogtreecommitdiff
path: root/zuul/driver/github/githubmodel.py
diff options
context:
space:
mode:
authorTobias Henkel <tobias.henkel@bmw.de>2017-07-28 10:07:34 +0200
committerTobias Henkel <tobias.henkel@bmw.de>2017-07-28 10:36:09 +0200
commitabf973e324f3b596202af82d13e1d2cd77624df4 (patch)
treebb2f814b2da10775bfa94d7d2b75538680d7e1bb /zuul/driver/github/githubmodel.py
parent5da0118953d9deaf7a6c33c42d4dc3adae7232ea (diff)
downloadzuul-abf973e324f3b596202af82d13e1d2cd77624df4.tar.gz
Fix dynamic layout with regex approval filters
In case the layout includes some regex approval filters (like username) the dynamic layout creation fails during deepcopy of the pipelines [1]. This is caused by Github/GerritApprovalFilter overwriting stuff in the original data structure. Fix this by using the already existing deepcopied data structures. To test this an unused pipeline with approval filters for Github and Gerrit is added to the dynamic layout test cases. This triggers the deepcopy error without the fix in every test_dynamic_* test case. [1] Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/zuul/manager/__init__.py", line 453, in _loadDynamicLayout include_config_projects=False) File "/usr/lib/python3.6/site-packages/zuul/configloader.py", line 1478, in createDynamicLayout config = tenant.config_projects_config.copy() File "/usr/lib/python3.6/site-packages/zuul/model.py", line 2150, in copy r.pipelines = copy.deepcopy(self.pipelines) File "/usr/lib/python3.6/copy.py", line 150, in deepcopy y = copier(x, memo) ... File "/usr/lib/python3.6/copy.py", line 240, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.6/copy.py", line 161, in deepcopy y = copier(memo) TypeError: cannot deepcopy this pattern object Change-Id: I4f7f74787aa91e938d0e2f07bd15b4e21d49cb88
Diffstat (limited to 'zuul/driver/github/githubmodel.py')
-rw-r--r--zuul/driver/github/githubmodel.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/zuul/driver/github/githubmodel.py b/zuul/driver/github/githubmodel.py
index db119f0fd..ffd1c3f94 100644
--- a/zuul/driver/github/githubmodel.py
+++ b/zuul/driver/github/githubmodel.py
@@ -68,8 +68,8 @@ class GithubCommonFilter(object):
reject_reviews=[]):
self._required_reviews = copy.deepcopy(required_reviews)
self._reject_reviews = copy.deepcopy(reject_reviews)
- self.required_reviews = self._tidy_reviews(required_reviews)
- self.reject_reviews = self._tidy_reviews(reject_reviews)
+ self.required_reviews = self._tidy_reviews(self._required_reviews)
+ self.reject_reviews = self._tidy_reviews(self._reject_reviews)
self.required_statuses = required_statuses
def _tidy_reviews(self, reviews):