Merge lp:~wgrant/launchpad/gpgkey-fks-no-garbo into lp:launchpad

Proposed by William Grant
Status: Merged
Merged at revision: 17940
Proposed branch: lp:~wgrant/launchpad/gpgkey-fks-no-garbo
Merge into: lp:launchpad
Prerequisite: lp:~wgrant/launchpad/gpgkey-fks
Diff against target: 243 lines (+3/-145)
5 files modified
database/sampledata/current-dev.sql (+1/-1)
database/sampledata/current.sql (+1/-1)
database/schema/security.cfg (+1/-4)
lib/lp/scripts/garbo.py (+0/-78)
lib/lp/scripts/tests/test_garbo.py (+0/-61)
To merge this branch: bzr merge lp:~wgrant/launchpad/gpgkey-fks-no-garbo
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+287803@code.launchpad.net

Commit message

Drop GPGKey FK replacement backfill garbo jobs.

Description of the change

Drop GPGKey FK replacement backfill garbo jobs.

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/sampledata/current-dev.sql'
2--- database/sampledata/current-dev.sql 2016-02-24 06:02:05 +0000
3+++ database/sampledata/current-dev.sql 2016-03-10 01:28:35 +0000
4@@ -9469,7 +9469,7 @@
5
6 ALTER TABLE signedcodeofconduct DISABLE TRIGGER ALL;
7
8-INSERT INTO signedcodeofconduct (id, owner, signingkey, datecreated, signedcode, recipient, active, admincomment, signing_key_fingerprint) VALUES (1, 16, 1, '2005-09-27 10:01:13', 'Sampledata signedcode', NULL, true, NULL, NULL);
9+INSERT INTO signedcodeofconduct (id, owner, signingkey, datecreated, signedcode, recipient, active, admincomment, signing_key_fingerprint) VALUES (1, 16, 1, '2005-09-27 10:01:13', 'Sampledata signedcode', NULL, true, NULL, 'ABCDEF0123456789ABCDDCBA0000111112345678');
10
11
12 ALTER TABLE signedcodeofconduct ENABLE TRIGGER ALL;
13
14=== modified file 'database/sampledata/current.sql'
15--- database/sampledata/current.sql 2016-02-24 06:02:05 +0000
16+++ database/sampledata/current.sql 2016-03-10 01:28:35 +0000
17@@ -9384,7 +9384,7 @@
18
19 ALTER TABLE signedcodeofconduct DISABLE TRIGGER ALL;
20
21-INSERT INTO signedcodeofconduct (id, owner, signingkey, datecreated, signedcode, recipient, active, admincomment, signing_key_fingerprint) VALUES (1, 16, 1, '2005-09-27 10:01:13', 'Sampledata signedcode', NULL, true, NULL, NULL);
22+INSERT INTO signedcodeofconduct (id, owner, signingkey, datecreated, signedcode, recipient, active, admincomment, signing_key_fingerprint) VALUES (1, 16, 1, '2005-09-27 10:01:13', 'Sampledata signedcode', NULL, true, NULL, 'ABCDEF0123456789ABCDDCBA0000111112345678');
23
24
25 ALTER TABLE signedcodeofconduct ENABLE TRIGGER ALL;
26
27=== modified file 'database/schema/security.cfg'
28--- database/schema/security.cfg 2016-03-09 22:54:30 +0000
29+++ database/schema/security.cfg 2016-03-10 01:28:35 +0000
30@@ -2279,7 +2279,6 @@
31 public.accesspolicygrant = SELECT, DELETE
32 public.account = SELECT, DELETE
33 public.answercontact = SELECT, DELETE
34-public.archive = SELECT, UPDATE
35 public.branch = SELECT, UPDATE
36 public.branchjob = SELECT, DELETE
37 public.binarypackagename = SELECT
38@@ -2321,7 +2320,6 @@
39 public.milestonetag = SELECT
40 public.openidconsumerassociation = SELECT, DELETE
41 public.openidconsumernonce = SELECT, DELETE
42-public.packageupload = SELECT, UPDATE
43 public.person = SELECT, DELETE
44 public.personsettings = SELECT, UPDATE
45 public.product = SELECT, UPDATE
46@@ -2331,10 +2329,9 @@
47 public.previewdiff = SELECT, DELETE
48 public.revisionauthor = SELECT, UPDATE
49 public.revisioncache = SELECT, DELETE
50-public.signedcodeofconduct = SELECT, UPDATE
51 public.snapfile = SELECT, DELETE
52 public.sourcepackagename = SELECT
53-public.sourcepackagerelease = SELECT, UPDATE
54+public.sourcepackagerelease = SELECT
55 public.sourcepackagepublishinghistory = SELECT, UPDATE
56 public.suggestivepotemplate = INSERT, DELETE
57 public.teammembership = SELECT, DELETE
58
59=== modified file 'lib/lp/scripts/garbo.py'
60--- lib/lp/scripts/garbo.py 2016-02-24 01:30:06 +0000
61+++ lib/lp/scripts/garbo.py 2016-03-10 01:28:35 +0000
62@@ -69,7 +69,6 @@
63 RevisionCache,
64 )
65 from lp.hardwaredb.model.hwdb import HWSubmission
66-from lp.registry.model.codeofconduct import SignedCodeOfConduct
67 from lp.registry.model.commercialsubscription import CommercialSubscription
68 from lp.registry.model.person import (
69 Person,
70@@ -125,7 +124,6 @@
71 from lp.soyuz.model.archive import Archive
72 from lp.soyuz.model.livefsbuild import LiveFSFile
73 from lp.soyuz.model.publishing import SourcePackagePublishingHistory
74-from lp.soyuz.model.queue import PackageUpload
75 from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache
76 from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease
77 from lp.translations.interfaces.potemplate import IPOTemplateSet
78@@ -1463,78 +1461,6 @@
79 transaction.commit()
80
81
82-class BaseKeyMigrator(TunableLoop):
83-
84- maximum_chunk_size = 5000
85-
86- def __init__(self, log, abort_time=None):
87- super(BaseKeyMigrator, self).__init__(
88- log, abort_time)
89- state = load_garbo_job_state(self.__class__.__name__) or {}
90- self.start_at = state.get('next_id', 1)
91- self.store = IMasterStore(self.klass)
92-
93- def findObjects(self):
94- return self.store.find(
95- self.klass,
96- self.klass.id >= self.start_at).order_by(
97- self.klass.id)
98-
99- def isDone(self):
100- return (
101- not getFeatureFlag('gpg.migrator.%s' % self.klass.__name__)
102- or self.findObjects().is_empty())
103-
104- def __call__(self, chunk_size):
105- objs = list(self.findObjects()[:chunk_size])
106- for obj in objs:
107- key = getattr(obj, self.fk_attr, None)
108- if self.fingerprint_attr:
109- setattr(
110- obj, self.fingerprint_attr,
111- key.fingerprint if key else None)
112- if self.owner_attr:
113- setattr(
114- obj, self.owner_attr,
115- key.owner if key else None)
116- self.start_at = objs[-1].id + 1
117- save_garbo_job_state(
118- self.__class__.__name__, {'next_id': self.start_at})
119- transaction.commit()
120-
121-
122-class ArchiveKeyMigrator(BaseKeyMigrator):
123-
124- klass = Archive
125- fk_attr = 'signing_key'
126- fingerprint_attr = '_signing_key_fingerprint'
127- owner_attr = 'signing_key_owner'
128-
129-
130-class PackageUploadKeyMigrator(BaseKeyMigrator):
131-
132- klass = PackageUpload
133- fk_attr = 'signing_key'
134- fingerprint_attr = 'signing_key_fingerprint'
135- owner_attr = 'signing_key_owner'
136-
137-
138-class SignedCodeOfConductKeyMigrator(BaseKeyMigrator):
139-
140- klass = SignedCodeOfConduct
141- fk_attr = 'signingkey'
142- fingerprint_attr = 'signing_key_fingerprint'
143- owner_attr = None
144-
145-
146-class SourcePackageReleaseKeyMigrator(BaseKeyMigrator):
147-
148- klass = SourcePackageRelease
149- fk_attr = 'dscsigningkey'
150- fingerprint_attr = 'signing_key_fingerprint'
151- owner_attr = 'signing_key_owner'
152-
153-
154 class BaseDatabaseGarbageCollector(LaunchpadCronScript):
155 """Abstract base class to run a collection of TunableLoops."""
156 script_name = None # Script name for locking and database user. Override.
157@@ -1783,14 +1709,10 @@
158 """
159 script_name = 'garbo-hourly'
160 tunable_loops = [
161- ArchiveKeyMigrator,
162 BugHeatUpdater,
163 BugWatchScheduler,
164 DuplicateSessionPruner,
165- PackageUploadKeyMigrator,
166 RevisionCachePruner,
167- SignedCodeOfConductKeyMigrator,
168- SourcePackageReleaseKeyMigrator,
169 UnusedSessionPruner,
170 ]
171 experimental_tunable_loops = []
172
173=== modified file 'lib/lp/scripts/tests/test_garbo.py'
174--- lib/lp/scripts/tests/test_garbo.py 2016-02-24 01:30:06 +0000
175+++ lib/lp/scripts/tests/test_garbo.py 2016-03-10 01:28:35 +0000
176@@ -1394,67 +1394,6 @@
177 self._test_LiveFSFilePruner(
178 'application/octet-stream', 0, expected_count=1)
179
180- def test_ArchiveKeyMigrator(self):
181- with dbuser('testadmin'):
182- key = self.factory.makeGPGKey(self.factory.makePerson())
183- a1 = self.factory.makeArchive()
184- a2 = self.factory.makeArchive()
185- removeSecurityProxy(a2).signing_key = key
186- self.assertIs(None, a1._signing_key_fingerprint)
187- self.assertIs(None, a1.signing_key_owner)
188- self.assertIs(None, a2._signing_key_fingerprint)
189- self.assertIs(None, a2.signing_key_owner)
190- with FeatureFixture({'gpg.migrator.Archive': 'on'}):
191- self.runHourly()
192- self.assertIs(None, a1._signing_key_fingerprint)
193- self.assertIs(None, a1.signing_key_owner)
194- self.assertEqual(key.fingerprint, a2._signing_key_fingerprint)
195- self.assertEqual(key.owner, a2.signing_key_owner)
196-
197- def test_PackageUploadKeyMigrator(self):
198- with dbuser('testadmin'):
199- key = self.factory.makeGPGKey(self.factory.makePerson())
200- pu1 = self.factory.makePackageUpload()
201- pu2 = self.factory.makePackageUpload(signing_key=key)
202- npu2 = removeSecurityProxy(pu2)
203- npu2.signing_key_fingerprint = npu2.signing_key_owner = None
204- self.assertIs(None, pu1.signing_key_fingerprint)
205- self.assertIs(None, pu1.signing_key_owner)
206- self.assertIs(None, pu2.signing_key_fingerprint)
207- self.assertIs(None, pu2.signing_key_owner)
208- with FeatureFixture({'gpg.migrator.PackageUpload': 'on'}):
209- self.runHourly()
210- self.assertIs(None, pu1.signing_key_fingerprint)
211- self.assertIs(None, pu1.signing_key_owner)
212- self.assertEqual(key.fingerprint, pu2.signing_key_fingerprint)
213- self.assertEqual(key.owner, pu2.signing_key_owner)
214-
215- def test_SignedCodeOfConductKeyMigrator(self):
216- coc = SignedCodeOfConduct.get(1)
217- self.assertIs(None, coc.signing_key_fingerprint)
218- with FeatureFixture({'gpg.migrator.SignedCodeOfConduct': 'on'}):
219- self.runHourly()
220- self.assertEqual(
221- 'ABCDEF0123456789ABCDDCBA0000111112345678',
222- coc.signing_key_fingerprint)
223-
224- def test_SourcePackageReleaseKeyMigrator(self):
225- with dbuser('testadmin'):
226- key = self.factory.makeGPGKey(self.factory.makePerson())
227- spr1 = self.factory.makeSourcePackageRelease()
228- spr2 = self.factory.makeSourcePackageRelease()
229- removeSecurityProxy(spr2).dscsigningkey = key
230- self.assertIs(None, spr1.signing_key_fingerprint)
231- self.assertIs(None, spr1.signing_key_owner)
232- self.assertIs(None, spr2.signing_key_fingerprint)
233- self.assertIs(None, spr2.signing_key_owner)
234- with FeatureFixture({'gpg.migrator.SourcePackageRelease': 'on'}):
235- self.runHourly()
236- self.assertIs(None, spr1.signing_key_fingerprint)
237- self.assertIs(None, spr1.signing_key_owner)
238- self.assertEqual(key.fingerprint, spr2.signing_key_fingerprint)
239- self.assertEqual(key.owner, spr2.signing_key_owner)
240-
241 def test_PersonSettingsENFPopulator(self):
242 switch_dbuser('testadmin')
243 store = IMasterStore(PersonSettings)