)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a68fca03042ec51c0e635015af80aea29b0800a8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Versioned objects provide a layer of abstraction on SQLAlchemy objects,"},{"line_number":10,"context_line":"allowing for database schema independence. As a result, upgrade compatibility"},{"line_number":11,"context_line":"across distributed services will be possible."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implementation of oslo.versionedobjects. This commit consists basic mechanism"},{"line_number":14,"context_line":"for oslo.versionedobjects. It should be base for implementation versioning to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_e9b6a13c","line":11,"updated":"2015-08-27 07:32:40.000000000","message":"I\u0027m glad to see this information in the commit message. It reminds me of a question I\u0027ve had for quite a while about the use of versioned object in ceilometer and aodh:\n\nIf the aodh tools have direct connections to their data storage level (they do) and do not use storable distributed objects (on which rpc calls are made) in what sense are versioned objects useful to the service?\n\nMy understanding is that in Nova (for example) versioned objects are useful because rpc calls are made on storable objects that can be in flight at any time across the distributed service and thus for their to be smooth rolling upgrades those in flight objects need to be able to be of different versions.\n\nAre ceilometer and aodh storage-related objects ever \"in flight\" in the same sense? If not, why are we doing this?","commit_id":"f0b57569b4ef689adeb4ed76d0c06041306a0fd5"}],"aodh/tests/objects/test_base.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"13c4d560d79898c5ce5cd2840707f8defdfde946","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _compare(self, db, obj):"},{"line_number":35,"context_line":"        db_dict \u003d db.as_dict()"},{"line_number":36,"context_line":"        for field, value in db_dict.items():"},{"line_number":37,"context_line":"            self.assertEqual(db_dict[field], obj[field])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_7d854857","line":36,"updated":"2015-08-24 15:32:21.000000000","message":"can probably just use keys() instead of items since we don\u0027t check value","commit_id":"32d084b6b2d2a5ddc4da95e11d239a57940e5878"}]}
