)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"4f6b6e5ac1dad12be4a72e5536d4982b1e2a4849","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I4f24e84c99689968e60360383b190ce168055e74"},{"line_number":24,"context_line":"Partially-implements: blueprint storage-sharding"},{"line_number":25,"context_line":"Closes-Bug: 1241686"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAATn%2F%2F1Ng%3D","line":25,"updated":"2013-10-28 10:46:27.000000000","message":"Partially-Closes ? ;)","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"8c426f5877c5a7e0de3b538726d4bea47864b560","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I4f24e84c99689968e60360383b190ce168055e74"},{"line_number":24,"context_line":"Partially-implements: blueprint storage-sharding"},{"line_number":25,"context_line":"Closes-Bug: 1241686"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAATn%2F%2F0a4%3D","line":25,"in_reply_to":"AAAATn%2F%2F1Ng%3D","updated":"2013-10-28 14:26:48.000000000","message":"Done","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"}],"marconi/queues/storage/__init__.py":[{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"f1986c0b383d21b37342c35a6e7822c4140b01d0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"from marconi.queues.storage import exceptions  # NOQA"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Hoist classes into package namespace"},{"line_number":7,"context_line":"AdminDriverBase \u003d base.AdminDriverBase"},{"line_number":8,"context_line":"ClaimBase \u003d base.ClaimBase"},{"line_number":9,"context_line":"DriverBase \u003d base.DriverBase"},{"line_number":10,"context_line":"MessageBase \u003d base.MessageBase"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATX%2F%2F%2BJs%3D","line":7,"updated":"2013-10-23 14:05:21.000000000","message":"In which I begin to separate admin storage functionality from public storage.","commit_id":"d9ef91385080ae5efa69638a67597af56a012c5e"}],"marconi/queues/storage/base.py":[{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"c285b510eeef893d203ef682c3be82a0bcca65bf","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":346,"context_line":"class ShardsController(ControllerBase):"},{"line_number":347,"context_line":"    \"\"\"A controller for managing shards.\"\"\""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2Fv6w%3D","line":346,"updated":"2013-10-10 11:38:24.000000000","message":"Becomes ShardsBase in the child patch. Inconsistency slipped past me... :P","commit_id":"162a8a81a680207ca98c8a84fcbe4b7edf6603ec"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"f1986c0b383d21b37342c35a6e7822c4140b01d0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"_LIMITS_GROUP \u003d \u0027queues:limits:storage\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":35,"context_line":"class DriverBase(object):"},{"line_number":36,"context_line":"    \"\"\"Interface definition for storage drivers."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATX%2F%2F%2BJo%3D","line":34,"updated":"2013-10-23 14:05:21.000000000","message":"Migrate *all the things* to six.add_metaclass!","commit_id":"d9ef91385080ae5efa69638a67597af56a012c5e"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"f1986c0b383d21b37342c35a6e7822c4140b01d0","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":71,"context_line":"class AdminDriverBase(object):"},{"line_number":72,"context_line":"    \"\"\"Interface definition for admin storage drivers."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    Allows access to the shard registry through a catalogue and a"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATX%2F%2F%2BJY%3D","line":71,"updated":"2013-10-23 14:05:21.000000000","message":"AdminDriverBase inherits the public driver interface in follow up patches. It ends up working more cleanly for unit testing and usability purposes, e.g., an admin should be able to do everything.","commit_id":"d9ef91385080ae5efa69638a67597af56a012c5e"},{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"40e99a18ee79f05b2cd78ec3410f8a1bab98738a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"class ControlDriverBase(object):"},{"line_number":76,"context_line":"    \"\"\"Interface definition for control plane storage drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    Storage drivers that work at the control plane layer allow on to"},{"line_number":79,"context_line":"    modify aspects of the functionality of the system. This is ideal"},{"line_number":80,"context_line":"    for administrative purposes."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0jk%3D","line":78,"updated":"2013-10-28 14:14:06.000000000","message":"\"allow on to\" ?","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"8c426f5877c5a7e0de3b538726d4bea47864b560","unresolved":false,"context_lines":[{"line_number":75,"context_line":"class ControlDriverBase(object):"},{"line_number":76,"context_line":"    \"\"\"Interface definition for control plane storage drivers."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    Storage drivers that work at the control plane layer allow on to"},{"line_number":79,"context_line":"    modify aspects of the functionality of the system. This is ideal"},{"line_number":80,"context_line":"    for administrative purposes."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0a0%3D","line":78,"in_reply_to":"AAAATn%2F%2F0jk%3D","updated":"2013-10-28 14:26:48.000000000","message":"Haha, good catch. Refactoring silliness. Fixing~","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"40e99a18ee79f05b2cd78ec3410f8a1bab98738a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def __init__(self, conf):"},{"line_number":88,"context_line":"        self.conf \u003d conf"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.conf.register_opts(_LIMITS_OPTIONS, group\u003d_LIMITS_GROUP)"},{"line_number":91,"context_line":"        self.limits_conf \u003d self.conf[_LIMITS_GROUP]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @abc.abstractproperty"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0i8%3D","line":90,"updated":"2013-10-28 14:14:06.000000000","message":"Are these \"limits\" options actually needed for the control driver?","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"8c426f5877c5a7e0de3b538726d4bea47864b560","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def __init__(self, conf):"},{"line_number":88,"context_line":"        self.conf \u003d conf"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.conf.register_opts(_LIMITS_OPTIONS, group\u003d_LIMITS_GROUP)"},{"line_number":91,"context_line":"        self.limits_conf \u003d self.conf[_LIMITS_GROUP]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @abc.abstractproperty"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0ao%3D","line":90,"in_reply_to":"AAAATn%2F%2F0i8%3D","updated":"2013-10-28 14:26:48.000000000","message":"No, not at all. I\u0027ll remove that.","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"40e99a18ee79f05b2cd78ec3410f8a1bab98738a","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        raise NotImplementedError"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    @abc.abstractmethod"},{"line_number":394,"context_line":"    def create(self, name, weight, location, options):"},{"line_number":395,"context_line":"        \"\"\"Registers a shard entry."},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        :param name: The name of this shard"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0eo%3D","line":394,"updated":"2013-10-28 14:14:06.000000000","message":"Is options required after all? Or should this default to None?","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"8c426f5877c5a7e0de3b538726d4bea47864b560","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        raise NotImplementedError"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    @abc.abstractmethod"},{"line_number":394,"context_line":"    def create(self, name, weight, location, options):"},{"line_number":395,"context_line":"        \"\"\"Registers a shard entry."},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        :param name: The name of this shard"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0aY%3D","line":394,"in_reply_to":"AAAATn%2F%2F0eo%3D","updated":"2013-10-28 14:26:48.000000000","message":"Hmmm, this should default to None. I\u0027ll patch this up.","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6943,"name":"Zhihao Yuan","email":"zhihao.yuan@rackspace.com","username":"zyuan"},"change_message_id":"7118cfaf924d8aeb8dda376c2a1c0940e3129e56","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    \"\"\"A controller for managing shards.\"\"\""},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    @abc.abstractmethod"},{"line_number":376,"context_line":"    def list(self, marker\u003dNone, limit\u003d10, detailed\u003dFalse):"},{"line_number":377,"context_line":"        \"\"\"Lists all registered shards."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        :param marker: used to determine which shard to start with"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2F0Q0%3D","line":376,"updated":"2013-10-28 15:03:12.000000000","message":"I don\u0027t think we need pagination support for shards.","commit_id":"142c7ae0d64be0f1b18ed6e12827dbd1dd8babb9"},{"author":{"_account_id":6943,"name":"Zhihao Yuan","email":"zhihao.yuan@rackspace.com","username":"zyuan"},"change_message_id":"7118cfaf924d8aeb8dda376c2a1c0940e3129e56","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        raise NotImplementedError"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    @abc.abstractmethod"},{"line_number":391,"context_line":"    def create(self, name, weight, uri, options\u003dNone):"},{"line_number":392,"context_line":"        \"\"\"Registers a shard entry."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        :param name: The name of this shard"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2F0Qo%3D","line":391,"updated":"2013-10-28 15:03:12.000000000","message":"Exclude `options` if not planned yet.","commit_id":"142c7ae0d64be0f1b18ed6e12827dbd1dd8babb9"}],"marconi/queues/storage/mongodb/controllers.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"4f6b6e5ac1dad12be4a72e5536d4982b1e2a4849","unresolved":false,"context_lines":[{"line_number":23,"context_line":"\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from marconi.queues.storage.mongodb import ("},{"line_number":26,"context_line":"    claims, messages, queues, shards"},{"line_number":27,"context_line":")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F1Fk%3D","line":26,"updated":"2013-10-28 10:46:27.000000000","message":"We should have just 1 import per line. I\u0027m happy with this kind of imports but IIRC, somewhere this is being enforced. Not 100% sure.\n\nI couldn\u0027t find it in our HACKING file.","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"8c426f5877c5a7e0de3b538726d4bea47864b560","unresolved":false,"context_lines":[{"line_number":23,"context_line":"\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from marconi.queues.storage.mongodb import ("},{"line_number":26,"context_line":"    claims, messages, queues, shards"},{"line_number":27,"context_line":")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0Z8%3D","line":26,"in_reply_to":"AAAATn%2F%2F1Fk%3D","updated":"2013-10-28 14:26:48.000000000","message":"Found it on `pypi hacking`: Do not import more than one module per line.\n\nI\u0027ll fix this up. It was starting to grow on me. :P","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"}],"marconi/queues/storage/mongodb/driver.py":[{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"22f37e79834852d743dda4a1faf7149719d70441","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return controllers.ClaimController(self)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @property"},{"line_number":88,"context_line":"    def shards_controller(self):"},{"line_number":89,"context_line":"        return controllers.ShardsController(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATH%2F%2FV%2Fg%3D","line":88,"updated":"2013-10-17 14:13:55.000000000","message":"Conceptually, I\u0027m not sure this belongs here in the same driver as the other controllers. The shard documents will reside on a central mongo replica set, while the other resources will reside on individual shards. Also, sharding exists at a layer \"above\" queue storage drivers, so the backend for shard storage may very well be different from the backend(s) used to store messages.","commit_id":"d554e1df51eb41ea25b035480c2df080b08ed3e2"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"b34f75bc00387c4c076f081a54b749c4022c5e51","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return controllers.ClaimController(self)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @property"},{"line_number":88,"context_line":"    def shards_controller(self):"},{"line_number":89,"context_line":"        return controllers.ShardsController(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATH%2F%2FRfM%3D","line":88,"in_reply_to":"AAAATH%2F%2FR7I%3D","updated":"2013-10-18 15:54:48.000000000","message":"I\u0027ll proceed with this split, given it makes sense all around, and as per agreement reached in IRC Thanks!","commit_id":"d554e1df51eb41ea25b035480c2df080b08ed3e2"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"89c18463ffa0166b3c3a598d4356fa79f672b83f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return controllers.ClaimController(self)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @property"},{"line_number":88,"context_line":"    def shards_controller(self):"},{"line_number":89,"context_line":"        return controllers.ShardsController(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATH%2F%2FR7I%3D","line":88,"in_reply_to":"AAAATH%2F%2FV%2Fg%3D","updated":"2013-10-18 13:59:04.000000000","message":"Hmm... that\u0027s a fair point.\n\nThe question then becomes one of, \"Where will this controller live?\", with regards to drivers. It is part of the queues API, but it only applies to the administrative interface. Would it make sense to split the storage layer into the admin driver and the public driver?\n\n    class PublicDriver(...):\n\n        @property\n        def _queue_controller(self): ...\n\n        @property\n        def _message_controller(self): ...\n\n        @property\n        def _claim_controller(self): ...\n\n\n    class AdminDriver(...):\n\n        @property\n        def shards_controller(self): ...\n\n        @property\n        def catalogue_controller(self): ...\n\n\nThoughts?","commit_id":"d554e1df51eb41ea25b035480c2df080b08ed3e2"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"c55d3cf2fba23a1c9e1b1013e0d0abb6b3eeacab","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return controllers.ClaimController(self)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class AdminDriver(storage.AdminDriverBase):"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def __init__(self, conf):"},{"line_number":96,"context_line":"        super(AdminDriver, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FQ94%3D","line":93,"updated":"2013-10-18 19:15:32.000000000","message":"Hmmm... with this split, I need to add a few entry points.\n\n    marconi.queues.public.storage \u003d\n        sqlite \u003d marconi.queues.storage.sqlite.driver:Driver\n        mongodb \u003d marconi.queues.storage.mongodb.driver:Driver    \n\n    marconi.queues.admin.storage \u003d\n        sqlite \u003d marconi.queues.storage.sqlite.driver:AdminDriver\n        mongodb \u003d marconi.queues.storage.mongodb.driver:AdminDriver    \n\n...and Do The Right Thing in the bootstrap, depending on whether the admin or the public API is launched.\n\nI\u0027ll add that in soon.","commit_id":"cb5031d8b7c65168b55f068dffb7febf73918360"}],"marconi/queues/storage/mongodb/shards.py":[{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"c285b510eeef893d203ef682c3be82a0bcca65bf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from marconi.queues.storage import base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ShardsController(base.ShardsController):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def list(self, marker\u003dNone, limit\u003d10, detailed\u003dFalse):"},{"line_number":23,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2Fv58%3D","line":20,"updated":"2013-10-10 11:38:24.000000000","message":"shards.ShardsBase (in child patch)","commit_id":"162a8a81a680207ca98c8a84fcbe4b7edf6603ec"}],"marconi/queues/storage/sqlite/controllers.py":[{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"40e99a18ee79f05b2cd78ec3410f8a1bab98738a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\"\"\"Exports SQLite driver controllers.\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from marconi.queues.storage.sqlite import ("},{"line_number":20,"context_line":"    claims, messages, queues, shards"},{"line_number":21,"context_line":")"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0dc%3D","line":20,"updated":"2013-10-28 14:14:06.000000000","message":"See Flavio\u0027s other comment.","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"},{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"8c426f5877c5a7e0de3b538726d4bea47864b560","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\"\"\"Exports SQLite driver controllers.\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from marconi.queues.storage.sqlite import ("},{"line_number":20,"context_line":"    claims, messages, queues, shards"},{"line_number":21,"context_line":")"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2F0Zc%3D","line":20,"in_reply_to":"AAAATn%2F%2F0dc%3D","updated":"2013-10-28 14:26:48.000000000","message":"Done! (Do not import more than one module per line)","commit_id":"159e6671bd48323b0c89c264a831bf68fe183ed9"}],"marconi/queues/storage/sqlite/shards.py":[{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"c285b510eeef893d203ef682c3be82a0bcca65bf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from marconi.queues.storage import base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ShardsController(base.ShardsController):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def list(self, marker\u003dNone, limit\u003d10, detailed\u003dFalse):"},{"line_number":23,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2Fv6E%3D","line":20,"updated":"2013-10-10 11:38:24.000000000","message":"shards.ShardsBase (in child patch)","commit_id":"162a8a81a680207ca98c8a84fcbe4b7edf6603ec"}],"marconi/tests/faulty_storage.py":[{"author":{"_account_id":6944,"name":"Allele Dev","email":"cpp.cabrera@gmail.com","username":"cpp-cabrera"},"change_message_id":"f1986c0b383d21b37342c35a6e7822c4140b01d0","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @property"},{"line_number":37,"context_line":"    def shards_controller(self):"},{"line_number":38,"context_line":"        return None"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class QueueController(storage.QueueBase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATX%2F%2F%2BJE%3D","line":38,"updated":"2013-10-23 14:05:21.000000000","message":"This is inconsistent with the other drivers. I move this to an admin driver in the last patch in this series.","commit_id":"d9ef91385080ae5efa69638a67597af56a012c5e"}]}
