)]}'
{"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"c9b1e97006f0b5fc071d0dc1453f7b5179be9433","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    with session.begin():"},{"line_number":462,"context_line":"        service_ref.save(session)"},{"line_number":463,"context_line":"        # Since we just created the service the last heartbeat will be ours"},{"line_number":464,"context_line":"        service_ref.last_heartbeat \u003d service_ref.updated_at"},{"line_number":465,"context_line":"        return service_ref"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a122d0e_bea55405","line":464,"updated":"2016-04-25 07:21:31.000000000","message":"I just tested the codes. At this moment, service_ref.updated_at is None. Should we set service_ref.created_at to last heartbeat here?","commit_id":"a3f96268437a4add2f5b96949e54017872d219af"}],"cinder/objects/service.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3de268f47dfb35083492b83fbe2967b39ac37bad","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_ac08a1da","line":30,"updated":"2016-03-14 11:54:22.000000000","message":"Is it used anywhere? I didn\u0027t find:(","commit_id":"571b5f057f332809e6141defeb2ef5e80f97a442"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"55ce0e23cdf9d4ab90bdd7b4e899da408ff2d60b","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_6f4a0bae","line":30,"in_reply_to":"3afc51ec_ac08a1da","updated":"2016-03-14 12:17:41.000000000","message":"Good eye!!","commit_id":"571b5f057f332809e6141defeb2ef5e80f97a442"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"c9b1e97006f0b5fc071d0dc1453f7b5179be9433","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    @base.remotable"},{"line_number":237,"context_line":"    def is_up(self, now\u003dNone):"},{"line_number":238,"context_line":"        expired \u003d utils.service_expired_time(with_timezone\u003dTrue)"},{"line_number":239,"context_line":"        # TODO(geguileo): In O - Replace below code with:"},{"line_number":240,"context_line":"        #                 return (self.last_heartbeat and"},{"line_number":241,"context_line":"        #                         (self.last_heartbeat \u003e\u003d expired))"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a122d0e_bee714e3","line":238,"updated":"2016-04-25 07:21:31.000000000","message":"I have following test:\na\u003dtimeutils.utcnow(with_timezone\u003dTrue)\n\nb\u003dtimeutils.utcnow(with_timezone\u003dFalse)\n\nWe can\u0027t check a \u003e b, it gives error \"TypeError: can\u0027t compare offset-naive and offset-aware datetimes\".\n\nI didn\u0027t find the unit test for this function is_up(), and I doubt it can succeed.","commit_id":"a3f96268437a4add2f5b96949e54017872d219af"}],"cinder/objects/service_node.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"127439cddd57c71acdf642f8edbc98d30fe1e6fe","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@base.CinderObjectRegistry.register"},{"line_number":35,"context_line":"class ServiceNode(base.CinderPersistentObject, base.CinderObject,"},{"line_number":36,"context_line":"                  base.CinderObjectDictCompat,"},{"line_number":37,"context_line":"                  base.CinderComparableObject):"},{"line_number":38,"context_line":"    # Version 1.0: Initial version"},{"line_number":39,"context_line":"    VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa0719c6_c6df6338","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":46},"updated":"2016-03-23 17:39:03.000000000","message":"Maybe we\u0027re able to introduce a 100% new object without that? Normally it\u0027s needed just to keep compatibility with old code using dict-like objects.","commit_id":"e208543f662ff0138de2bbc0fd3fbb0a4120e549"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"155b8e99aefcbfc5a075b81a5f56c252c7f82f35","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@base.CinderObjectRegistry.register"},{"line_number":35,"context_line":"class ServiceNode(base.CinderPersistentObject, base.CinderObject,"},{"line_number":36,"context_line":"                  base.CinderObjectDictCompat,"},{"line_number":37,"context_line":"                  base.CinderComparableObject):"},{"line_number":38,"context_line":"    # Version 1.0: Initial version"},{"line_number":39,"context_line":"    VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"da0c15f0_f20a6a20","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":46},"in_reply_to":"fa0719c6_c6df6338","updated":"2016-03-28 11:13:41.000000000","message":"I actually thought about it, but I believe I decided not to for convenience.  Although I don\u0027t really access fields as a dictionary, I think I use update somewhere in these patches.","commit_id":"e208543f662ff0138de2bbc0fd3fbb0a4120e549"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"127439cddd57c71acdf642f8edbc98d30fe1e6fe","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    }"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    child_versions \u003d {"},{"line_number":196,"context_line":"        \u00271.0\u0027: \u00271.0\u0027"},{"line_number":197,"context_line":"    }"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa0719c6_c66f63fa","line":196,"range":{"start_line":196,"start_character":0,"end_line":196,"end_character":20},"updated":"2016-03-23 17:39:03.000000000","message":"According to hacking rules we should have a \u0027,\u0027 at the end here.","commit_id":"e208543f662ff0138de2bbc0fd3fbb0a4120e549"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"155b8e99aefcbfc5a075b81a5f56c252c7f82f35","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    }"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    child_versions \u003d {"},{"line_number":196,"context_line":"        \u00271.0\u0027: \u00271.0\u0027"},{"line_number":197,"context_line":"    }"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":15,"id":"da0c15f0_521a366f","line":196,"range":{"start_line":196,"start_character":0,"end_line":196,"end_character":20},"in_reply_to":"fa0719c6_c66f63fa","updated":"2016-03-28 11:13:41.000000000","message":"Sometimes I forget...  :-)","commit_id":"e208543f662ff0138de2bbc0fd3fbb0a4120e549"}]}
