)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"71c5897ff7a20f0bf91addc763304416f5e9d830","unresolved":false,"context_lines":[{"line_number":15,"context_line":"for serialization of kwargs to partially solve a bug with how this"},{"line_number":16,"context_line":"decorator is used in the BandwidthUsage object."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"A follow-up patch closes the bug by adding conversion back to datetimes"},{"line_number":19,"context_line":"using existing db api helper method convert_objects_related_datetimes(),"},{"line_number":20,"context_line":"which in turn makes use of timeutils.parse_strtime()."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dac4157f_dfddb871","line":18,"updated":"2015-04-20 13:13:08.000000000","message":"Nit: It shouldn\u0027t be necessary to describe a follow-up patch in detail  here. Imagine someone who clones the code after this merges but before the next one does. Will they have a broken deployment?  If the functionality is really inseparable, we should merge this patch with the follow-up IMHO.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"7f65572aef225e79f37f04689d33320d5db8d262","unresolved":false,"context_lines":[{"line_number":15,"context_line":"for serialization of kwargs to partially solve a bug with how this"},{"line_number":16,"context_line":"decorator is used in the BandwidthUsage object."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"A follow-up patch closes the bug by adding conversion back to datetimes"},{"line_number":19,"context_line":"using existing db api helper method convert_objects_related_datetimes(),"},{"line_number":20,"context_line":"which in turn makes use of timeutils.parse_strtime()."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dac4157f_db9f075e","line":18,"in_reply_to":"dac4157f_5fb648dd","updated":"2015-04-20 15:02:54.000000000","message":"Oh. How sad.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"6a2bd140a92a88a72c770aee34f22f0686ac2e58","unresolved":false,"context_lines":[{"line_number":15,"context_line":"for serialization of kwargs to partially solve a bug with how this"},{"line_number":16,"context_line":"decorator is used in the BandwidthUsage object."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"A follow-up patch closes the bug by adding conversion back to datetimes"},{"line_number":19,"context_line":"using existing db api helper method convert_objects_related_datetimes(),"},{"line_number":20,"context_line":"which in turn makes use of timeutils.parse_strtime()."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dac4157f_5fb648dd","line":18,"in_reply_to":"dac4157f_dfddb871","updated":"2015-04-20 13:28:06.000000000","message":"The deployment is broken even without this change, so cloning after this one won\u0027t make a difference.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"}],"nova/objects/base.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"71c5897ff7a20f0bf91addc763304416f5e9d830","unresolved":false,"context_lines":[{"line_number":938,"context_line":"def serialize_args(fn):"},{"line_number":939,"context_line":"    \"\"\"Decorator that will do the arguments serialization before remoting.\"\"\""},{"line_number":940,"context_line":"    def wrapper(obj, *args, **kwargs):"},{"line_number":941,"context_line":"        args \u003d list(args)"},{"line_number":942,"context_line":"        for index, arg in enumerate(args):"},{"line_number":943,"context_line":"            if isinstance(arg, datetime.datetime):"},{"line_number":944,"context_line":"                args[index] \u003d timeutils.strtime(at\u003darg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_246dc904","line":941,"updated":"2015-04-20 13:13:08.000000000","message":"We don\u0027t need this line, we can just enumerate over a tuple on the line below","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"6a2bd140a92a88a72c770aee34f22f0686ac2e58","unresolved":false,"context_lines":[{"line_number":938,"context_line":"def serialize_args(fn):"},{"line_number":939,"context_line":"    \"\"\"Decorator that will do the arguments serialization before remoting.\"\"\""},{"line_number":940,"context_line":"    def wrapper(obj, *args, **kwargs):"},{"line_number":941,"context_line":"        args \u003d list(args)"},{"line_number":942,"context_line":"        for index, arg in enumerate(args):"},{"line_number":943,"context_line":"            if isinstance(arg, datetime.datetime):"},{"line_number":944,"context_line":"                args[index] \u003d timeutils.strtime(at\u003darg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_ffebdcae","line":941,"in_reply_to":"dac4157f_246dc904","updated":"2015-04-20 13:28:06.000000000","message":"Yes, but we can\u0027t make changes to it, because a tuple is immutable.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"7f65572aef225e79f37f04689d33320d5db8d262","unresolved":false,"context_lines":[{"line_number":938,"context_line":"def serialize_args(fn):"},{"line_number":939,"context_line":"    \"\"\"Decorator that will do the arguments serialization before remoting.\"\"\""},{"line_number":940,"context_line":"    def wrapper(obj, *args, **kwargs):"},{"line_number":941,"context_line":"        args \u003d list(args)"},{"line_number":942,"context_line":"        for index, arg in enumerate(args):"},{"line_number":943,"context_line":"            if isinstance(arg, datetime.datetime):"},{"line_number":944,"context_line":"                args[index] \u003d timeutils.strtime(at\u003darg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_9b8f4f23","line":941,"in_reply_to":"dac4157f_ffebdcae","updated":"2015-04-20 15:02:54.000000000","message":"Ohhh Yes, good point :)","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f79bb30fd19205ac17511ec1b81ff46ffc4adb77","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        args \u003d list(args)"},{"line_number":942,"context_line":"        for index, arg in enumerate(args):"},{"line_number":943,"context_line":"            if isinstance(arg, datetime.datetime):"},{"line_number":944,"context_line":"                args[index] \u003d timeutils.strtime(at\u003darg)"},{"line_number":945,"context_line":"        for k, v in kwargs.iteritems():"},{"line_number":946,"context_line":"            if k \u003d\u003d \u0027exc_val\u0027 and v:"},{"line_number":947,"context_line":"                kwargs[k] \u003d str(v)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_b22d36aa","line":944,"updated":"2015-04-22 14:43:12.000000000","message":"This is modifying the list as it goes. I think this should be fine, but maybe it\u0027d be better to just construct a new list during the loop and use that?","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"98036c103cbedb778b78f1b702f4cacc84e63584","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        args \u003d list(args)"},{"line_number":942,"context_line":"        for index, arg in enumerate(args):"},{"line_number":943,"context_line":"            if isinstance(arg, datetime.datetime):"},{"line_number":944,"context_line":"                args[index] \u003d timeutils.strtime(at\u003darg)"},{"line_number":945,"context_line":"        for k, v in kwargs.iteritems():"},{"line_number":946,"context_line":"            if k \u003d\u003d \u0027exc_val\u0027 and v:"},{"line_number":947,"context_line":"                kwargs[k] \u003d str(v)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_38e585db","line":944,"in_reply_to":"dac4157f_b22d36aa","updated":"2015-04-27 10:05:37.000000000","message":"I think this is fine, I\u0027m only modifying the lists contents, not the list itself. However, I can\u0027t find a definition saying it\u0027s ok, so I\u0027ll change it.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"}],"nova/tests/unit/objects/test_objects.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f79bb30fd19205ac17511ec1b81ff46ffc4adb77","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"    @base.serialize_args"},{"line_number":1198,"context_line":"    def dummy_method(self, *args, **kwargs):"},{"line_number":1199,"context_line":"        self.args \u003d args"},{"line_number":1200,"context_line":"        self.kwargs \u003d kwargs"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":""},{"line_number":1203,"context_line":"class TestArgsSerializer(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_bd1bc772","line":1200,"updated":"2015-04-22 14:43:12.000000000","message":"I don\u0027t think there\u0027s any reason we need to test this decorator on top of a real NovaObject. Maybe it would be simpler to just test it on a regular method and avoid adding yet another test object that has to be tracked in the list below?","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"98036c103cbedb778b78f1b702f4cacc84e63584","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"    @base.serialize_args"},{"line_number":1198,"context_line":"    def dummy_method(self, *args, **kwargs):"},{"line_number":1199,"context_line":"        self.args \u003d args"},{"line_number":1200,"context_line":"        self.kwargs \u003d kwargs"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":""},{"line_number":1203,"context_line":"class TestArgsSerializer(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_98ec91f4","line":1200,"in_reply_to":"dac4157f_bd1bc772","updated":"2015-04-27 10:05:37.000000000","message":"Good point, I\u0027ll make it go away.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f79bb30fd19205ac17511ec1b81ff46ffc4adb77","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"    \u0027EC2InstanceMapping\u0027: \u00271.0-e9c3257badcc3aa14089b0a62f163108\u0027,"},{"line_number":1239,"context_line":"    \u0027EC2SnapshotMapping\u0027: \u00271.0-a545acd0d1519d4316b9b00f30e59b4d\u0027,"},{"line_number":1240,"context_line":"    \u0027EC2VolumeMapping\u0027: \u00271.0-15710aa212b5cbfdb155fdc81cce4ede\u0027,"},{"line_number":1241,"context_line":"    \u0027FakeObj\u0027: \u00271.0-b3ccc6182755365613254b4282e4a0a8\u0027,"},{"line_number":1242,"context_line":"    \u0027FixedIP\u0027: \u00271.10-4e8060f91f6c94ae73d557708ec62f56\u0027,"},{"line_number":1243,"context_line":"    \u0027FixedIPList\u0027: \u00271.10-724a59f2446d917d0bd13d6aa33edf8a\u0027,"},{"line_number":1244,"context_line":"    \u0027Flavor\u0027: \u00271.1-01ed47361fbe76bf728edf667d3f45d3\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_d20b0a29","line":1241,"updated":"2015-04-22 14:43:12.000000000","message":"When we move to oslo.versionedobjects, we won\u0027t  have to do silly things like this :)","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"98036c103cbedb778b78f1b702f4cacc84e63584","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"    \u0027EC2InstanceMapping\u0027: \u00271.0-e9c3257badcc3aa14089b0a62f163108\u0027,"},{"line_number":1239,"context_line":"    \u0027EC2SnapshotMapping\u0027: \u00271.0-a545acd0d1519d4316b9b00f30e59b4d\u0027,"},{"line_number":1240,"context_line":"    \u0027EC2VolumeMapping\u0027: \u00271.0-15710aa212b5cbfdb155fdc81cce4ede\u0027,"},{"line_number":1241,"context_line":"    \u0027FakeObj\u0027: \u00271.0-b3ccc6182755365613254b4282e4a0a8\u0027,"},{"line_number":1242,"context_line":"    \u0027FixedIP\u0027: \u00271.10-4e8060f91f6c94ae73d557708ec62f56\u0027,"},{"line_number":1243,"context_line":"    \u0027FixedIPList\u0027: \u00271.10-724a59f2446d917d0bd13d6aa33edf8a\u0027,"},{"line_number":1244,"context_line":"    \u0027Flavor\u0027: \u00271.1-01ed47361fbe76bf728edf667d3f45d3\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_58a8398d","line":1241,"in_reply_to":"dac4157f_d20b0a29","updated":"2015-04-27 10:05:37.000000000","message":"Please","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"}]}
