Merge lp:~matiasb/launchpad/snap-build-db-access-snapjob into lp:launchpad

Proposed by Matias Bordese
Status: Merged
Merged at revision: 18959
Proposed branch: lp:~matiasb/launchpad/snap-build-db-access-snapjob
Merge into: lp:launchpad
Diff against target: 173 lines (+32/-15)
2 files modified
database/schema/security.cfg (+1/-0)
lib/lp/snappy/tests/test_snapbuildbehaviour.py (+31/-15)
To merge this branch: bzr merge lp:~matiasb/launchpad/snap-build-db-access-snapjob
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+367069@code.launchpad.net

Commit message

Updated DB permission allowing build to access snapjob.

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'database/schema/security.cfg'
2--- database/schema/security.cfg 2019-04-23 12:30:16 +0000
3+++ database/schema/security.cfg 2019-05-07 18:25:13 +0000
4@@ -1001,6 +1001,7 @@
5 public.snapbuild = SELECT, UPDATE
6 public.snapbuildjob = SELECT, INSERT
7 public.snapfile = SELECT
8+public.snapjob = SELECT
9 public.snappyseries = SELECT
10 public.sourcepackagename = SELECT
11 public.sourcepackagepublishinghistory = SELECT
12
13=== modified file 'lib/lp/snappy/tests/test_snapbuildbehaviour.py'
14--- lib/lp/snappy/tests/test_snapbuildbehaviour.py 2019-05-03 13:26:45 +0000
15+++ lib/lp/snappy/tests/test_snapbuildbehaviour.py 2019-05-07 18:25:13 +0000
16@@ -101,6 +101,7 @@
17 TestCase,
18 TestCaseWithFactory,
19 )
20+from lp.testing.dbuser import dbuser
21 from lp.testing.gpgkeys import gpgkeysdir
22 from lp.testing.keyserver import InProcessKeyServerFixture
23 from lp.testing.layers import LaunchpadZopelessLayer
24@@ -409,7 +410,8 @@
25 expected_archives, expected_trusted_keys = (
26 yield get_sources_list_for_building(
27 job.build, job.build.distro_arch_series, None))
28- args = yield job.extraBuildArgs()
29+ with dbuser(config.builddmaster.dbuser):
30+ args = yield job.extraBuildArgs()
31 self.assertThat(args, MatchesDict({
32 "archive_private": Is(False),
33 "archives": Equals(expected_archives),
34@@ -431,7 +433,8 @@
35 snap = self.factory.makeSnap()
36 request = self.factory.makeSnapBuildRequest(snap=snap)
37 job = self.makeJob(snap=snap, build_request=request)
38- args = yield job.extraBuildArgs()
39+ with dbuser(config.builddmaster.dbuser):
40+ args = yield job.extraBuildArgs()
41 self.assertEqual(request.id, args["build_request_id"])
42 expected_timestamp = format_as_rfc3339(request.date_requested)
43 self.assertEqual(expected_timestamp, args["build_request_timestamp"])
44@@ -445,7 +448,8 @@
45 expected_archives, expected_trusted_keys = (
46 yield get_sources_list_for_building(
47 job.build, job.build.distro_arch_series, None))
48- args = yield job.extraBuildArgs()
49+ with dbuser(config.builddmaster.dbuser):
50+ args = yield job.extraBuildArgs()
51 self.assertThat(args, MatchesDict({
52 "archive_private": Is(False),
53 "archives": Equals(expected_archives),
54@@ -473,7 +477,8 @@
55 expected_archives, expected_trusted_keys = (
56 yield get_sources_list_for_building(
57 job.build, job.build.distro_arch_series, None))
58- args = yield job.extraBuildArgs()
59+ with dbuser(config.builddmaster.dbuser):
60+ args = yield job.extraBuildArgs()
61 self.assertThat(args, MatchesDict({
62 "archive_private": Is(False),
63 "archives": Equals(expected_archives),
64@@ -501,7 +506,8 @@
65 expected_archives, expected_trusted_keys = (
66 yield get_sources_list_for_building(
67 job.build, job.build.distro_arch_series, None))
68- args = yield job.extraBuildArgs()
69+ with dbuser(config.builddmaster.dbuser):
70+ args = yield job.extraBuildArgs()
71 self.assertThat(args, MatchesDict({
72 "archive_private": Is(False),
73 "archives": Equals(expected_archives),
74@@ -529,7 +535,8 @@
75 expected_archives, expected_trusted_keys = (
76 yield get_sources_list_for_building(
77 job.build, job.build.distro_arch_series, None))
78- args = yield job.extraBuildArgs()
79+ with dbuser(config.builddmaster.dbuser):
80+ args = yield job.extraBuildArgs()
81 self.assertThat(args, MatchesDict({
82 "archive_private": Is(False),
83 "archives": Equals(expected_archives),
84@@ -551,7 +558,8 @@
85 # For the "name" argument, extraBuildArgs prefers Snap.store_name
86 # over Snap.name if the former is set.
87 job = self.makeJob(store_name="something-else")
88- args = yield job.extraBuildArgs()
89+ with dbuser(config.builddmaster.dbuser):
90+ args = yield job.extraBuildArgs()
91 self.assertEqual("something-else", args["name"])
92
93 @defer.inlineCallbacks
94@@ -567,7 +575,8 @@
95 distroarchseries=job.build.distro_arch_series,
96 pocket=job.build.pocket, archive=archive,
97 status=PackagePublishingStatus.PUBLISHED)
98- args = yield job.extraBuildArgs()
99+ with dbuser(config.builddmaster.dbuser):
100+ args = yield job.extraBuildArgs()
101 self.assertThat(args["trusted_keys"], MatchesListwise([
102 Base64KeyMatches("0D57E99656BEFB0897606EE9A022DD1F5001B46D"),
103 ]))
104@@ -579,7 +588,8 @@
105 expected_archives, expected_trusted_keys = (
106 yield get_sources_list_for_building(
107 job.build, job.build.distro_arch_series, None))
108- args = yield job.extraBuildArgs()
109+ with dbuser(config.builddmaster.dbuser):
110+ args = yield job.extraBuildArgs()
111 self.assertFalse(isProxy(args["channels"]))
112 self.assertEqual({"snapcraft": "edge"}, args["channels"])
113
114@@ -590,7 +600,8 @@
115 expected_archives, expected_trusted_keys = (
116 yield get_sources_list_for_building(
117 job.build, job.build.distro_arch_series, None))
118- args = yield job.extraBuildArgs()
119+ with dbuser(config.builddmaster.dbuser):
120+ args = yield job.extraBuildArgs()
121 self.assertNotIn("channels", args)
122
123 @defer.inlineCallbacks
124@@ -603,7 +614,8 @@
125 expected_archives, expected_trusted_keys = (
126 yield get_sources_list_for_building(
127 job.build, job.build.distro_arch_series, None))
128- args = yield job.extraBuildArgs()
129+ with dbuser(config.builddmaster.dbuser):
130+ args = yield job.extraBuildArgs()
131 self.assertFalse(isProxy(args["channels"]))
132 self.assertEqual({"snapcraft": "stable"}, args["channels"])
133
134@@ -617,7 +629,8 @@
135 expected_archives, expected_trusted_keys = (
136 yield get_sources_list_for_building(
137 job.build, job.build.distro_arch_series, None))
138- args = yield job.extraBuildArgs()
139+ with dbuser(config.builddmaster.dbuser):
140+ args = yield job.extraBuildArgs()
141 self.assertNotIn("channels", args)
142
143 @defer.inlineCallbacks
144@@ -625,7 +638,8 @@
145 # If external network access is not allowed for the snap,
146 # extraBuildArgs does not dispatch a proxy token.
147 job = self.makeJob(allow_internet=False)
148- args = yield job.extraBuildArgs()
149+ with dbuser(config.builddmaster.dbuser):
150+ args = yield job.extraBuildArgs()
151 self.assertNotIn("proxy_url", args)
152 self.assertNotIn("revocation_endpoint", args)
153
154@@ -634,7 +648,8 @@
155 # If the snap requests building of a source tarball, extraBuildArgs
156 # sends the appropriate arguments.
157 job = self.makeJob(build_source_tarball=True)
158- args = yield job.extraBuildArgs()
159+ with dbuser(config.builddmaster.dbuser):
160+ args = yield job.extraBuildArgs()
161 self.assertTrue(args["build_source_tarball"])
162
163 @defer.inlineCallbacks
164@@ -643,7 +658,8 @@
165 # arguments.
166 self.useFixture(FeatureFixture({SNAP_PRIVATE_FEATURE_FLAG: "on"}))
167 job = self.makeJob(private=True)
168- args = yield job.extraBuildArgs()
169+ with dbuser(config.builddmaster.dbuser):
170+ args = yield job.extraBuildArgs()
171 self.assertTrue(args["private"])
172
173 @defer.inlineCallbacks