Merge lp:~stevenk/launchpad/drop-garbo-accesspolicy-redux into lp:launchpad

Proposed by Steve Kowalik
Status: Merged
Approved by: Ian Booth
Approved revision: no longer in the source branch.
Merged at revision: 14957
Proposed branch: lp:~stevenk/launchpad/drop-garbo-accesspolicy-redux
Merge into: lp:launchpad
Diff against target: 163 lines (+1/-94)
3 files modified
database/schema/security.cfg (+0/-1)
lib/lp/scripts/garbo.py (+1/-72)
lib/lp/scripts/tests/test_garbo.py (+0/-21)
To merge this branch: bzr merge lp:~stevenk/launchpad/drop-garbo-accesspolicy-redux
Reviewer Review Type Date Requested Status
Ian Booth (community) Approve
Review via email: mp+97779@code.launchpad.net

Commit message

Drop AccessPolicy{Distribution,Product}Addition harder.

Description of the change

Drop AccessPolicy{Distribution,Product}Addition. Thank them for their sterling work by removing them from the code base. This time for reals, since AccessPolicy rows are inserted when new products and distributions are created.

To post a comment you must log in.
Revision history for this message
Ian Booth (wallyworld) wrote :

code deletion is always good

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 2012-03-09 01:25:12 +0000
3+++ database/schema/security.cfg 2012-03-16 00:51:21 +0000
4@@ -2105,7 +2105,6 @@
5
6 [garbo]
7 groups=script,read
8-public.accesspolicy = SELECT, INSERT
9 public.account = SELECT, DELETE
10 public.answercontact = SELECT, DELETE
11 public.branch = SELECT, UPDATE
12
13=== modified file 'lib/lp/scripts/garbo.py'
14--- lib/lp/scripts/garbo.py 2012-03-14 03:12:52 +0000
15+++ lib/lp/scripts/garbo.py 2012-03-16 00:51:21 +0000
16@@ -13,7 +13,6 @@
17 datetime,
18 timedelta,
19 )
20-import itertools
21 import logging
22 import multiprocessing
23 import os
24@@ -27,12 +26,7 @@
25 import iso8601
26 from psycopg2 import IntegrityError
27 import pytz
28-from storm.expr import (
29- Exists,
30- In,
31- Not,
32- Select,
33- )
34+from storm.expr import In
35 from storm.locals import (
36 Max,
37 Min,
38@@ -63,12 +57,7 @@
39 RevisionCache,
40 )
41 from lp.hardwaredb.model.hwdb import HWSubmission
42-from lp.registry.enums import InformationType
43-from lp.registry.interfaces.accesspolicy import IAccessPolicySource
44-from lp.registry.model.accesspolicy import AccessPolicy
45-from lp.registry.model.distribution import Distribution
46 from lp.registry.model.person import Person
47-from lp.registry.model.product import Product
48 from lp.services.config import config
49 from lp.services.database import postgresql
50 from lp.services.database.constants import UTC_NOW
51@@ -1001,64 +990,6 @@
52 transaction.commit()
53
54
55-class AccessPolicyDistributionAddition(TunableLoop):
56- """A `TunableLoop` to add AccessPolicy for all distributions."""
57-
58- maximum_chunk_size = 5000
59-
60- def __init__(self, log, abort_time=None):
61- super(AccessPolicyDistributionAddition, self).__init__(
62- log, abort_time)
63- self.transaction = transaction
64- self.store = IMasterStore(Distribution)
65-
66- def findDistributions(self):
67- return self.store.find(
68- Distribution,
69- Not(Exists(
70- Select(AccessPolicy.id,
71- tables=[AccessPolicy], where=[
72- AccessPolicy.distribution_id == Distribution.id]))))
73-
74- def isDone(self):
75- return self.findDistributions().is_empty()
76-
77- def __call__(self, chunk_size):
78- policies = itertools.product(
79- self.findDistributions()[:chunk_size],
80- (InformationType.USERDATA, InformationType.EMBARGOEDSECURITY))
81- getUtility(IAccessPolicySource).create(policies)
82- self.transaction.commit()
83-
84-
85-class AccessPolicyProductAddition(TunableLoop):
86- """A `TunableLoop` to add AccessPolicy for all products."""
87-
88- maximum_chunk_size = 5000
89-
90- def __init__(self, log, abort_time=None):
91- super(AccessPolicyProductAddition, self).__init__(log, abort_time)
92- self.transaction = transaction
93- self.store = IMasterStore(Product)
94-
95- def findProducts(self):
96- return self.store.find(
97- Product,
98- Not(Exists(
99- Select(AccessPolicy.id, tables=[AccessPolicy], where=[
100- AccessPolicy.product_id == Product.id]))))
101-
102- def isDone(self):
103- return self.findProducts().is_empty()
104-
105- def __call__(self, chunk_size):
106- policies = itertools.product(
107- self.findProducts()[:chunk_size],
108- (InformationType.USERDATA, InformationType.EMBARGOEDSECURITY))
109- getUtility(IAccessPolicySource).create(policies)
110- self.transaction.commit()
111-
112-
113 class SpecificationWorkitemMigrator(TunableLoop):
114 """Migrate work-items from Specification.whiteboard to
115 SpecificationWorkItem.
116@@ -1433,8 +1364,6 @@
117 UnusedSessionPruner,
118 DuplicateSessionPruner,
119 BugHeatUpdater,
120- AccessPolicyDistributionAddition,
121- AccessPolicyProductAddition,
122 BugsInformationTypeMigrator,
123 ]
124 experimental_tunable_loops = []
125
126=== modified file 'lib/lp/scripts/tests/test_garbo.py'
127--- lib/lp/scripts/tests/test_garbo.py 2012-03-14 03:12:52 +0000
128+++ lib/lp/scripts/tests/test_garbo.py 2012-03-16 00:51:21 +0000
129@@ -55,7 +55,6 @@
130 from lp.code.model.codeimportevent import CodeImportEvent
131 from lp.code.model.codeimportresult import CodeImportResult
132 from lp.registry.enums import InformationType
133-from lp.registry.interfaces.accesspolicy import IAccessPolicySource
134 from lp.registry.interfaces.distribution import IDistributionSet
135 from lp.registry.interfaces.person import IPersonSet
136 from lp.scripts.garbo import (
137@@ -1023,26 +1022,6 @@
138 self.runHourly()
139 self.assertNotEqual(old_update, naked_bug.heat_last_updated)
140
141- def test_AccessPolicyDistributionAddition(self):
142- switch_dbuser('testadmin')
143- distribution = self.factory.makeDistribution()
144- transaction.commit()
145- self.runHourly()
146- ap = getUtility(IAccessPolicySource).findByPillar((distribution,))
147- expected = [
148- InformationType.USERDATA, InformationType.EMBARGOEDSECURITY]
149- self.assertContentEqual(expected, [policy.type for policy in ap])
150-
151- def test_AccessPolicyProductAddition(self):
152- switch_dbuser('testadmin')
153- product = self.factory.makeProduct()
154- transaction.commit()
155- self.runHourly()
156- ap = getUtility(IAccessPolicySource).findByPillar((product,))
157- expected = [
158- InformationType.USERDATA, InformationType.EMBARGOEDSECURITY]
159- self.assertContentEqual(expected, [policy.type for policy in ap])
160-
161 def test_SpecificationWorkitemMigrator_not_enabled_by_default(self):
162 self.assertFalse(getFeatureFlag('garbo.workitem_migrator.enabled'))
163 switch_dbuser('testadmin')