Merge lp:~cjwatson/launchpad/snap-build-channels-remove-proxy into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 18581
Proposed branch: lp:~cjwatson/launchpad/snap-build-channels-remove-proxy
Merge into: lp:launchpad
Diff against target: 43 lines (+7/-1)
2 files modified
lib/lp/snappy/model/snapbuildbehaviour.py (+5/-1)
lib/lp/snappy/tests/test_snapbuildbehaviour.py (+2/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/snap-build-channels-remove-proxy
Reviewer Review Type Date Requested Status
Adam Collard (community) Approve
Launchpad code reviewers Pending
Review via email: mp+341965@code.launchpad.net

Commit message

Remove security proxy from snap channels dict sent to builders.

Description of the change

Otherwise build dispatch crashes like this:

2018-03-23 12:49:05+0000 [QueryProtocol,client] Scanning dogfood-lgw01-amd64-001 failed with: cannot marshal <type 'zope.security._proxy._Proxy'> objects

To post a comment you must log in.
Revision history for this message
Adam Collard (adam-collard) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/snappy/model/snapbuildbehaviour.py'
--- lib/lp/snappy/model/snapbuildbehaviour.py 2018-03-22 16:48:16 +0000
+++ lib/lp/snappy/model/snapbuildbehaviour.py 2018-03-23 13:31:23 +0000
@@ -19,6 +19,7 @@
19from twisted.web.client import getPage19from twisted.web.client import getPage
20from zope.component import adapter20from zope.component import adapter
21from zope.interface import implementer21from zope.interface import implementer
22from zope.security.proxy import removeSecurityProxy
2223
23from lp.buildmaster.interfaces.builder import CannotBuild24from lp.buildmaster.interfaces.builder import CannotBuild
24from lp.buildmaster.interfaces.buildfarmjobbehaviour import (25from lp.buildmaster.interfaces.buildfarmjobbehaviour import (
@@ -110,7 +111,10 @@
110 args["archive_private"] = build.archive.private111 args["archive_private"] = build.archive.private
111 args["build_url"] = canonical_url(build)112 args["build_url"] = canonical_url(build)
112 if build.channels is not None:113 if build.channels is not None:
113 args["channels"] = build.channels114 # We have to remove the security proxy that Zope applies to this
115 # dict, since otherwise we'll be unable to serialise it to
116 # XML-RPC.
117 args["channels"] = removeSecurityProxy(build.channels)
114 if build.snap.branch is not None:118 if build.snap.branch is not None:
115 args["branch"] = build.snap.branch.bzr_identity119 args["branch"] = build.snap.branch.bzr_identity
116 elif build.snap.git_ref is not None:120 elif build.snap.git_ref is not None:
117121
=== modified file 'lib/lp/snappy/tests/test_snapbuildbehaviour.py'
--- lib/lp/snappy/tests/test_snapbuildbehaviour.py 2018-03-22 16:48:16 +0000
+++ lib/lp/snappy/tests/test_snapbuildbehaviour.py 2018-03-23 13:31:23 +0000
@@ -31,6 +31,7 @@
31from twisted.internet import defer31from twisted.internet import defer
32from twisted.trial.unittest import TestCase as TrialTestCase32from twisted.trial.unittest import TestCase as TrialTestCase
33from zope.component import getUtility33from zope.component import getUtility
34from zope.proxy import isProxy
34from zope.security.proxy import removeSecurityProxy35from zope.security.proxy import removeSecurityProxy
3536
36from lp.archivepublisher.interfaces.archivesigningkey import (37from lp.archivepublisher.interfaces.archivesigningkey import (
@@ -410,6 +411,7 @@
410 yield get_sources_list_for_building(411 yield get_sources_list_for_building(
411 job.build, job.build.distro_arch_series, None))412 job.build, job.build.distro_arch_series, None))
412 args = yield job._extraBuildArgs()413 args = yield job._extraBuildArgs()
414 self.assertFalse(isProxy(args["channels"]))
413 self.assertEqual({"snapcraft": "edge"}, args["channels"])415 self.assertEqual({"snapcraft": "edge"}, args["channels"])
414416
415 @defer.inlineCallbacks417 @defer.inlineCallbacks