diff options
author | Tobias Henkel <tobias.henkel@bmw.de> | 2017-07-28 10:07:34 +0200 |
---|---|---|
committer | Tobias Henkel <tobias.henkel@bmw.de> | 2017-07-28 10:36:09 +0200 |
commit | abf973e324f3b596202af82d13e1d2cd77624df4 (patch) | |
tree | bb2f814b2da10775bfa94d7d2b75538680d7e1bb /zuul/driver/github/githubmodel.py | |
parent | 5da0118953d9deaf7a6c33c42d4dc3adae7232ea (diff) | |
download | zuul-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.py | 4 |
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): |