Merge lp:~allenap/launchpad/series-init-failure-explanations-bug-835024-db into lp:launchpad

Proposed by Gavin Panella
Status: Merged
Approved by: Gavin Panella
Approved revision: no longer in the source branch.
Merged at revision: 13954
Proposed branch: lp:~allenap/launchpad/series-init-failure-explanations-bug-835024-db
Merge into: lp:launchpad
Diff against target: 208 lines (+17/-39)
6 files modified
lib/lp/services/memcache/restful.py (+2/-4)
lib/lp/soyuz/model/distributionjob.py (+3/-13)
lib/lp/soyuz/model/distroseriesdifferencejob.py (+5/-5)
lib/lp/soyuz/model/initializedistroseriesjob.py (+1/-3)
lib/lp/soyuz/model/packagecopyjob.py (+5/-13)
versions.cfg (+1/-1)
To merge this branch: bzr merge lp:~allenap/launchpad/series-init-failure-explanations-bug-835024-db
Reviewer Review Type Date Requested Status
Graham Binns (community) code Approve
Review via email: mp+75183@code.launchpad.net

Commit message

[r=gmb][bug=835024] Use the new JSON property in DistributionJob.

Description of the change

This switches DistributionJob to using the new JSON property from Storm.

To post a comment you must log in.
Revision history for this message
Graham Binns (gmb) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/services/memcache/restful.py'
--- lib/lp/services/memcache/restful.py 2010-08-20 20:31:18 +0000
+++ lib/lp/services/memcache/restful.py 2011-09-13 13:46:24 +0000
@@ -4,11 +4,9 @@
4"""Storm/memcached implementation of lazr.restful's representation cache."""4"""Storm/memcached implementation of lazr.restful's representation cache."""
55
6from lazr.restful.simple import BaseRepresentationCache6from lazr.restful.simple import BaseRepresentationCache
7from lazr.restful.utils import get_current_web_service_request
8import storm7import storm
9from zope.component import getUtility8from zope.component import getUtility
10from zope.security.proxy import removeSecurityProxy9from zope.security.proxy import removeSecurityProxy
11from zope.traversing.browser import absoluteURL
1210
13from canonical.config import config11from canonical.config import config
14from lp.services.memcache.interfaces import IMemcacheClient12from lp.services.memcache.interfaces import IMemcacheClient
@@ -32,11 +30,11 @@
32 obj = removeSecurityProxy(obj)30 obj = removeSecurityProxy(obj)
33 try:31 try:
34 storm_info = storm.info.get_obj_info(obj)32 storm_info = storm.info.get_obj_info(obj)
35 except storm.exceptions.ClassInfoError, e:33 except storm.exceptions.ClassInfoError:
36 # There's no Storm data for this object. Don't cache it,34 # There's no Storm data for this object. Don't cache it,
37 # since we don't know how to invalidate the cache.35 # since we don't know how to invalidate the cache.
38 return self.DO_NOT_CACHE36 return self.DO_NOT_CACHE
39 table_name = storm_info.cls_info.table37 table_name = storm_info.cls_info.table.name
40 primary_key = tuple(var.get() for var in storm_info.primary_vars)38 primary_key = tuple(var.get() for var in storm_info.primary_vars)
41 identifier = table_name + repr(primary_key)39 identifier = table_name + repr(primary_key)
4240
4341
=== modified file 'lib/lp/soyuz/model/distributionjob.py'
--- lib/lp/soyuz/model/distributionjob.py 2011-09-09 19:23:39 +0000
+++ lib/lp/soyuz/model/distributionjob.py 2011-09-13 13:46:24 +0000
@@ -9,12 +9,11 @@
9]9]
1010
11from lazr.delegates import delegates11from lazr.delegates import delegates
12import simplejson
13from storm.locals import (12from storm.locals import (
14 And,13 And,
15 Int,14 Int,
15 JSON,
16 Reference,16 Reference,
17 Unicode,
18 )17 )
19from zope.interface import implements18from zope.interface import implements
2019
@@ -52,7 +51,7 @@
5251
53 job_type = EnumCol(enum=DistributionJobType, notNull=True)52 job_type = EnumCol(enum=DistributionJobType, notNull=True)
5453
55 _json_data = Unicode('json_data')54 metadata = JSON('json_data')
5655
57 def __init__(self, distribution, distroseries, job_type, metadata):56 def __init__(self, distribution, distroseries, job_type, metadata):
58 super(DistributionJob, self).__init__()57 super(DistributionJob, self).__init__()
@@ -60,16 +59,7 @@
60 self.distribution = distribution59 self.distribution = distribution
61 self.distroseries = distroseries60 self.distroseries = distroseries
62 self.job_type = job_type61 self.job_type = job_type
63 self._json_data = self.serializeMetadata(metadata)62 self.metadata = metadata
64
65 @classmethod
66 def serializeMetadata(cls, metadata_dict):
67 """Serialize a dict of metadata into a unicode string."""
68 return simplejson.dumps(metadata_dict).decode('utf-8')
69
70 @property
71 def metadata(self):
72 return simplejson.loads(self._json_data)
7363
7464
75class DistributionJobDerived(BaseRunnableJob):65class DistributionJobDerived(BaseRunnableJob):
7666
=== modified file 'lib/lp/soyuz/model/distroseriesdifferencejob.py'
--- lib/lp/soyuz/model/distroseriesdifferencejob.py 2011-08-31 14:05:59 +0000
+++ lib/lp/soyuz/model/distroseriesdifferencejob.py 2011-09-13 13:46:24 +0000
@@ -8,6 +8,7 @@
8 'DistroSeriesDifferenceJob',8 'DistroSeriesDifferenceJob',
9 ]9 ]
1010
11import simplejson
11from zope.component import getUtility12from zope.component import getUtility
12from zope.interface import (13from zope.interface import (
13 classProvides,14 classProvides,
@@ -84,8 +85,8 @@
84 :return: A tuple of: derived distribution id, derived distroseries id,85 :return: A tuple of: derived distribution id, derived distroseries id,
85 job type, job id, JSON data map.86 job type, job id, JSON data map.
86 """87 """
87 json = DistributionJob.serializeMetadata(make_metadata(88 json = simplejson.dumps(
88 sourcepackagename_id, parent_series.id))89 make_metadata(sourcepackagename_id, parent_series.id))
89 return (90 return (
90 derived_series.distribution.id,91 derived_series.distribution.id,
91 derived_series.id,92 derived_series.id,
@@ -141,8 +142,7 @@
141 # the metadata string. It's fragile, but this is only an142 # the metadata string. It's fragile, but this is only an
142 # optimization. It's not actually disastrous to create143 # optimization. It's not actually disastrous to create
143 # redundant jobs occasionally.144 # redundant jobs occasionally.
144 json_metadata = DistributionJob.serializeMetadata(145 json_metadata = make_metadata(sourcepackagename.id, parent_series.id)
145 make_metadata(sourcepackagename.id, parent_series.id))
146146
147 # Use master store because we don't like outdated information147 # Use master store because we don't like outdated information
148 # here.148 # here.
@@ -153,7 +153,7 @@
153 DistributionJob.job_type ==153 DistributionJob.job_type ==
154 DistributionJobType.DISTROSERIESDIFFERENCE,154 DistributionJobType.DISTROSERIESDIFFERENCE,
155 DistributionJob.distroseries == derived_series,155 DistributionJob.distroseries == derived_series,
156 DistributionJob._json_data == json_metadata,156 DistributionJob.metadata == json_metadata,
157 DistributionJob.job_id.is_in(Job.ready_jobs))157 DistributionJob.job_id.is_in(Job.ready_jobs))
158158
159 return [159 return [
160160
=== modified file 'lib/lp/soyuz/model/initializedistroseriesjob.py'
--- lib/lp/soyuz/model/initializedistroseriesjob.py 2011-09-09 19:23:39 +0000
+++ lib/lp/soyuz/model/initializedistroseriesjob.py 2011-09-13 13:46:24 +0000
@@ -7,7 +7,6 @@
7 "InitializeDistroSeriesJob",7 "InitializeDistroSeriesJob",
8]8]
99
10import simplejson
11from zope.interface import (10from zope.interface import (
12 classProvides,11 classProvides,
13 implements,12 implements,
@@ -206,8 +205,7 @@
206 # This method is called when error is an instance of205 # This method is called when error is an instance of
207 # self.user_error_types.206 # self.user_error_types.
208 super(InitializeDistroSeriesJob, self).notifyUserError(error)207 super(InitializeDistroSeriesJob, self).notifyUserError(error)
209 metadata = dict(self.metadata, error_description=unicode(error))208 self.metadata = dict(self.metadata, error_description=unicode(error))
210 self.context._json_data = simplejson.dumps(metadata).decode("utf-8")
211209
212 def getOopsVars(self):210 def getOopsVars(self):
213 """See `IRunnableJob`."""211 """See `IRunnableJob`."""
214212
=== modified file 'lib/lp/soyuz/model/packagecopyjob.py'
--- lib/lp/soyuz/model/packagecopyjob.py 2011-08-23 14:35:43 +0000
+++ lib/lp/soyuz/model/packagecopyjob.py 2011-09-13 13:46:24 +0000
@@ -15,6 +15,7 @@
15from storm.locals import (15from storm.locals import (
16 And,16 And,
17 Int,17 Int,
18 JSON,
18 Reference,19 Reference,
19 Unicode,20 Unicode,
20 )21 )
@@ -103,7 +104,7 @@
103104
104 job_type = EnumCol(enum=PackageCopyJobType, notNull=True)105 job_type = EnumCol(enum=PackageCopyJobType, notNull=True)
105106
106 _json_data = Unicode('json_data')107 metadata = JSON('json_data')
107108
108 # Derived concrete classes. The entire class gets one dict for109 # Derived concrete classes. The entire class gets one dict for
109 # this; it's not meant to be on an instance.110 # this; it's not meant to be on an instance.
@@ -145,16 +146,7 @@
145 self.target_distroseries = target_distroseries146 self.target_distroseries = target_distroseries
146 self.package_name = unicode(package_name)147 self.package_name = unicode(package_name)
147 self.copy_policy = copy_policy148 self.copy_policy = copy_policy
148 self._json_data = self.serializeMetadata(metadata)149 self.metadata = metadata
149
150 @classmethod
151 def serializeMetadata(cls, metadata_dict):
152 """Serialize a dict of metadata into a unicode string."""
153 return simplejson.dumps(metadata_dict).decode('utf-8')
154
155 @property
156 def metadata(self):
157 return simplejson.loads(self._json_data)
158150
159 @property151 @property
160 def package_version(self):152 def package_version(self):
@@ -164,7 +156,7 @@
164 """Add metadata_dict to the existing metadata."""156 """Add metadata_dict to the existing metadata."""
165 existing = self.metadata157 existing = self.metadata
166 existing.update(metadata_dict)158 existing.update(metadata_dict)
167 self._json_data = self.serializeMetadata(existing)159 self.metadata = existing
168160
169 @property161 @property
170 def component_name(self):162 def component_name(self):
@@ -294,7 +286,7 @@
294 data = (286 data = (
295 cls.class_job_type, target_distroseries, copy_policy,287 cls.class_job_type, target_distroseries, copy_policy,
296 source_archive, target_archive, package_name, job_id,288 source_archive, target_archive, package_name, job_id,
297 PackageCopyJob.serializeMetadata(metadata))289 simplejson.dumps(metadata, ensure_ascii=False))
298 format_string = "(%s)" % ", ".join(["%s"] * len(data))290 format_string = "(%s)" % ", ".join(["%s"] * len(data))
299 return format_string % sqlvalues(*data)291 return format_string % sqlvalues(*data)
300292
301293
=== modified file 'versions.cfg'
--- versions.cfg 2011-09-12 23:52:19 +0000
+++ versions.cfg 2011-09-13 13:46:24 +0000
@@ -85,7 +85,7 @@
85soupmatchers = 0.1r5385soupmatchers = 0.1r53
86sourcecodegen = 0.6.986sourcecodegen = 0.6.9
87# lp:~launchpad-committers/storm/with-without-datetime87# lp:~launchpad-committers/storm/with-without-datetime
88storm = 0.18.0.99-lpwithnodatetime-r39688storm = 0.18.0.99-lpwithnodatetime-r398
89testresources = 0.2.4-r5889testresources = 0.2.4-r58
90testtools = 0.9.12-r22890testtools = 0.9.12-r228
91timeline = 0.0.191timeline = 0.0.1