)]}'
{"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f0acb31bc4777c694e6e3859bbb39e78af4ffda8","unresolved":false,"context_lines":[{"line_number":5122,"context_line":"        model_query(context, models.BandwidthUsage, read_deleted\u003d\"yes\","},{"line_number":5123,"context_line":"                    use_slave\u003duse_slave)."},{"line_number":5124,"context_line":"        filter(models.BandwidthUsage.uuid.in_(uuids))."},{"line_number":5125,"context_line":"        filter_by(start_period\u003dstart_period)."},{"line_number":5126,"context_line":"        all()"},{"line_number":5127,"context_line":"    )"},{"line_number":5128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_fc878910","line":5125,"updated":"2015-04-16 19:57:00.000000000","message":"This isn\u0027t the converted version here right?","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a14c114db65d05b82c43c2d9b44230bf956afa9a","unresolved":false,"context_lines":[{"line_number":5122,"context_line":"        model_query(context, models.BandwidthUsage, read_deleted\u003d\"yes\","},{"line_number":5123,"context_line":"                    use_slave\u003duse_slave)."},{"line_number":5124,"context_line":"        filter(models.BandwidthUsage.uuid.in_(uuids))."},{"line_number":5125,"context_line":"        filter_by(start_period\u003dstart_period)."},{"line_number":5126,"context_line":"        all()"},{"line_number":5127,"context_line":"    )"},{"line_number":5128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_a3c43992","line":5125,"in_reply_to":"3ab451fb_fc878910","updated":"2015-04-17 00:49:33.000000000","message":"Done","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3bb1fd00066b2c6df1b40fd131233142b14e3c82","unresolved":false,"context_lines":[{"line_number":5105,"context_line":"@require_context"},{"line_number":5106,"context_line":"def bw_usage_get(context, uuid, start_period, mac, use_slave\u003dFalse):"},{"line_number":5107,"context_line":"    values \u003d {\u0027start_period\u0027: start_period}"},{"line_number":5108,"context_line":"    convert_objects_related_datetimes(values, \u0027start_period\u0027)"},{"line_number":5109,"context_line":"    return model_query(context, models.BandwidthUsage, read_deleted\u003d\"yes\","},{"line_number":5110,"context_line":"                       use_slave\u003duse_slave).\\"},{"line_number":5111,"context_line":"                           filter_by(start_period\u003dvalues[\u0027start_period\u0027]).\\"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_f73f7723","line":5108,"updated":"2015-04-20 18:02:14.000000000","message":"Nit, but \u0027values \u003d convert_object...\u0027 is more explicit.","commit_id":"4469535e18d10e6c1e71bdb69b895e077fe70919"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0b2306f06f8ac5cce0a5fa582bd23a60238a304d","unresolved":false,"context_lines":[{"line_number":5105,"context_line":"@require_context"},{"line_number":5106,"context_line":"def bw_usage_get(context, uuid, start_period, mac, use_slave\u003dFalse):"},{"line_number":5107,"context_line":"    values \u003d {\u0027start_period\u0027: start_period}"},{"line_number":5108,"context_line":"    convert_objects_related_datetimes(values, \u0027start_period\u0027)"},{"line_number":5109,"context_line":"    return model_query(context, models.BandwidthUsage, read_deleted\u003d\"yes\","},{"line_number":5110,"context_line":"                       use_slave\u003duse_slave).\\"},{"line_number":5111,"context_line":"                           filter_by(start_period\u003dvalues[\u0027start_period\u0027]).\\"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_bc9c04c1","line":5108,"in_reply_to":"dac4157f_f73f7723","updated":"2015-04-22 01:03:56.000000000","message":"will do in the next patch","commit_id":"4469535e18d10e6c1e71bdb69b895e077fe70919"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3bb1fd00066b2c6df1b40fd131233142b14e3c82","unresolved":false,"context_lines":[{"line_number":5138,"context_line":"        # NOTE(llu) last_refreshed should be in the same format"},{"line_number":5139,"context_line":"        # no matter it\u0027s generated here or passed in as parameter"},{"line_number":5140,"context_line":"        # after serialization"},{"line_number":5141,"context_line":"        last_refreshed \u003d timeutils.strtime()"},{"line_number":5142,"context_line":""},{"line_number":5143,"context_line":"    # NOTE(comstud): More often than not, we\u0027ll be updating records vs"},{"line_number":5144,"context_line":"    # creating records.  Optimize accordingly, trying to update existing"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_d7511364","line":5141,"updated":"2015-04-20 18:02:14.000000000","message":"I don\u0027t think this should be updated.  As long as they\u0027re converted properly I don\u0027t think it matters that this matches.  I would actually like to see things go back to passing datetime objects in, though that would take a bit more work than this.","commit_id":"4469535e18d10e6c1e71bdb69b895e077fe70919"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0b2306f06f8ac5cce0a5fa582bd23a60238a304d","unresolved":false,"context_lines":[{"line_number":5138,"context_line":"        # NOTE(llu) last_refreshed should be in the same format"},{"line_number":5139,"context_line":"        # no matter it\u0027s generated here or passed in as parameter"},{"line_number":5140,"context_line":"        # after serialization"},{"line_number":5141,"context_line":"        last_refreshed \u003d timeutils.strtime()"},{"line_number":5142,"context_line":""},{"line_number":5143,"context_line":"    # NOTE(comstud): More often than not, we\u0027ll be updating records vs"},{"line_number":5144,"context_line":"    # creating records.  Optimize accordingly, trying to update existing"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_dc1698f0","line":5141,"in_reply_to":"dac4157f_d7511364","updated":"2015-04-22 01:03:56.000000000","message":"@Andrew, the reason I change utcnow() to strtime() is because when the last_refreshed is passed from parameter from remote call, it\u0027s in iso format where we don\u0027t have the subsecond part, while generated here in utc native format it have subsecond part. \n\nNow the since the dependent patch changes isotime to strtime, all of them will have subsecond part. I\u0027ll drop this change.","commit_id":"4469535e18d10e6c1e71bdb69b895e077fe70919"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3bb1fd00066b2c6df1b40fd131233142b14e3c82","unresolved":false,"context_lines":[{"line_number":5149,"context_line":"                  \u0027last_ctr_out\u0027: last_ctr_out,"},{"line_number":5150,"context_line":"                  \u0027bw_in\u0027: bw_in,"},{"line_number":5151,"context_line":"                  \u0027bw_out\u0027: bw_out,"},{"line_number":5152,"context_line":"                  \u0027start_period\u0027: start_period}"},{"line_number":5153,"context_line":"        datetime_keys \u003d (\u0027start_period\u0027, \u0027last_refreshed\u0027)"},{"line_number":5154,"context_line":"        convert_objects_related_datetimes(values, *datetime_keys)"},{"line_number":5155,"context_line":"        rows \u003d model_query(context, models.BandwidthUsage,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_b7e57fa9","line":5152,"updated":"2015-04-20 18:02:14.000000000","message":"This is a bit of a misuse of the values dict.  start_period does not need to be updated and really shouldn\u0027t be added in here.","commit_id":"4469535e18d10e6c1e71bdb69b895e077fe70919"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0b2306f06f8ac5cce0a5fa582bd23a60238a304d","unresolved":false,"context_lines":[{"line_number":5149,"context_line":"                  \u0027last_ctr_out\u0027: last_ctr_out,"},{"line_number":5150,"context_line":"                  \u0027bw_in\u0027: bw_in,"},{"line_number":5151,"context_line":"                  \u0027bw_out\u0027: bw_out,"},{"line_number":5152,"context_line":"                  \u0027start_period\u0027: start_period}"},{"line_number":5153,"context_line":"        datetime_keys \u003d (\u0027start_period\u0027, \u0027last_refreshed\u0027)"},{"line_number":5154,"context_line":"        convert_objects_related_datetimes(values, *datetime_keys)"},{"line_number":5155,"context_line":"        rows \u003d model_query(context, models.BandwidthUsage,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_dcb57831","line":5152,"in_reply_to":"dac4157f_b7e57fa9","updated":"2015-04-22 01:03:56.000000000","message":"The reason I put start_period here is to reuse the values dict for timestamp conversion. Anyhow, i\u0027ll change in the next patch","commit_id":"4469535e18d10e6c1e71bdb69b895e077fe70919"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"fc10e4b4f0984e25fa6396af81acaaa1c45494d3","unresolved":false,"context_lines":[{"line_number":5124,"context_line":"        ts_values \u003d {\u0027last_refreshed\u0027: last_refreshed,"},{"line_number":5125,"context_line":"                     \u0027start_period\u0027: start_period}"},{"line_number":5126,"context_line":"        ts_keys \u003d (\u0027start_period\u0027, \u0027last_refreshed\u0027)"},{"line_number":5127,"context_line":"        ts_values \u003d convert_objects_related_datetimes(ts_values, *ts_keys)"},{"line_number":5128,"context_line":"        values \u003d {\u0027last_refreshed\u0027: ts_values[\u0027last_refreshed\u0027],"},{"line_number":5129,"context_line":"                  \u0027last_ctr_in\u0027: last_ctr_in,"},{"line_number":5130,"context_line":"                  \u0027last_ctr_out\u0027: last_ctr_out,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3acd31a7_46165ba8","line":5127,"updated":"2015-05-01 10:46:58.000000000","message":"nit: Suggest:\n\n    ts \u003d {\u0027last_refreshed\u0027: last_refreshed,\n          \u0027start_period\u0027: start_period}\n    ts \u003d convert_objects_related_datetimes(ts, *ts.keys())","commit_id":"35c0fefd6a87ac884f8d396be40e39ae283e6424"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"67e29541f1ecbf6f1948f4d9ac194834350ab6ce","unresolved":false,"context_lines":[{"line_number":5124,"context_line":"        ts_values \u003d {\u0027last_refreshed\u0027: last_refreshed,"},{"line_number":5125,"context_line":"                     \u0027start_period\u0027: start_period}"},{"line_number":5126,"context_line":"        ts_keys \u003d (\u0027start_period\u0027, \u0027last_refreshed\u0027)"},{"line_number":5127,"context_line":"        ts_values \u003d convert_objects_related_datetimes(ts_values, *ts_keys)"},{"line_number":5128,"context_line":"        values \u003d {\u0027last_refreshed\u0027: ts_values[\u0027last_refreshed\u0027],"},{"line_number":5129,"context_line":"                  \u0027last_ctr_in\u0027: last_ctr_in,"},{"line_number":5130,"context_line":"                  \u0027last_ctr_out\u0027: last_ctr_out,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3acd31a7_c6694b27","line":5127,"in_reply_to":"3acd31a7_46165ba8","updated":"2015-05-01 10:51:59.000000000","message":"alternatively you could make L323:\n\n    for key in datetime_keys or values.keys():","commit_id":"35c0fefd6a87ac884f8d396be40e39ae283e6424"}],"nova/objects/bandwidth_usage.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"1c512b00f3718af207fdc58b36f8b07cbc7897d6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if db_bw_usage:"},{"line_number":58,"context_line":"            return cls._from_db_object(context, cls(), db_bw_usage)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_by_instance_uuid_and_mac(cls, context, instance_uuid, mac,"},{"line_number":62,"context_line":"                                     start_period\u003dNone, use_slave\u003dFalse):"},{"line_number":63,"context_line":"        if start_period:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aa745d1_6a9b90ca","line":60,"updated":"2015-04-16 11:28:20.000000000","message":"Same comment as before, only at the correct place this time :)\n\nI don\u0027t think you are allowed to do this without a major version bump. Changing existing remotable interfaces to non-remotable breaks backwards compatibility, I\u0027ve been told.\nIf you follow my suggestion, I don\u0027t think you need to change anything here, the db api changes should be enough to get things working.","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a14c114db65d05b82c43c2d9b44230bf956afa9a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if db_bw_usage:"},{"line_number":58,"context_line":"            return cls._from_db_object(context, cls(), db_bw_usage)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_by_instance_uuid_and_mac(cls, context, instance_uuid, mac,"},{"line_number":62,"context_line":"                                     start_period\u003dNone, use_slave\u003dFalse):"},{"line_number":63,"context_line":"        if start_period:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_4300d5aa","line":60,"in_reply_to":"3ab451fb_1c69158c","updated":"2015-04-17 00:49:33.000000000","message":"I\u0027m following the convention https://github.com/openstack/nova/blob/master/nova/objects/instance.py#L1210 here. \n\nSorry I\u0027m quite new to the object stuff. I thought the version bump only required if either the object fields change or the object method change in a way that would result a change in the calling convention. \n\nI\u0027ll change back to use the original decorator.","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"2867c97cc5eb2e6ac52b34f7ef120bab3954843f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if db_bw_usage:"},{"line_number":58,"context_line":"            return cls._from_db_object(context, cls(), db_bw_usage)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_by_instance_uuid_and_mac(cls, context, instance_uuid, mac,"},{"line_number":62,"context_line":"                                     start_period\u003dNone, use_slave\u003dFalse):"},{"line_number":63,"context_line":"        if start_period:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_4a7c4872","line":60,"in_reply_to":"3ab451fb_4300d5aa","updated":"2015-04-17 17:55:25.000000000","message":"The serialize_args decorator does change the calling convention so by not having it before the base.remotable decorator things are different.","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f0acb31bc4777c694e6e3859bbb39e78af4ffda8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if db_bw_usage:"},{"line_number":58,"context_line":"            return cls._from_db_object(context, cls(), db_bw_usage)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_by_instance_uuid_and_mac(cls, context, instance_uuid, mac,"},{"line_number":62,"context_line":"                                     start_period\u003dNone, use_slave\u003dFalse):"},{"line_number":63,"context_line":"        if start_period:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_1c69158c","line":60,"in_reply_to":"5aa745d1_6a9b90ca","updated":"2015-04-16 19:57:00.000000000","message":"Yeah, I\u0027m not sure why the decorator is being dropped.  It does change the RPC in a way that would need a version bump and seems unnecessary.","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3bb1fd00066b2c6df1b40fd131233142b14e3c82","unresolved":false,"context_lines":[{"line_number":7382,"context_line":"        bw_usage \u003d db.bw_usage_get(self.ctxt, \u0027fake_uuid1\u0027, start_period,"},{"line_number":7383,"context_line":"                                   \u0027fake_mac1\u0027)"},{"line_number":7384,"context_line":"        self.assertIsNone(bw_usage)"},{"line_number":7385,"context_line":""},{"line_number":7386,"context_line":"        db.bw_usage_update(self.ctxt, \u0027fake_uuid1\u0027,"},{"line_number":7387,"context_line":"                \u0027fake_mac1\u0027, start_period,"},{"line_number":7388,"context_line":"                100, 200, 12345, 67890)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_97f95b50","side":"PARENT","line":7385,"updated":"2015-04-20 18:02:14.000000000","message":"Unnecessary change.","commit_id":"9c3fe6f526bb24cfb114314b88ae4b9dcadb3d65"}],"nova/tests/unit/objects/test_bandwidth_usage.py":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"ae584aac5263ac63e5349b9e2896afef37edb802","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                         microsecond\u003d0)"},{"line_number":65,"context_line":"        start_period \u003d now - datetime.timedelta(seconds\u003d10)"},{"line_number":66,"context_line":"        return now, start_period"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_get_by_instance_uuid_and_mac(self):"},{"line_number":69,"context_line":"        def _fake_bw_usage_get(context, uuid, start_period, mac, use_slave):"},{"line_number":70,"context_line":"            if start_period:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aa745d1_574f6192","line":67,"updated":"2015-04-16 11:25:04.000000000","message":"I don\u0027t think you are allowed to do this without a major version bump. Changing existing remotable interfaces to non-remotable breaks backwards compatibility, I\u0027ve been told.\n\nIf you follow my suggestion, I don\u0027t think you need to change anything here, the db api changes should be enough to get things working.","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"1c512b00f3718af207fdc58b36f8b07cbc7897d6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                         microsecond\u003d0)"},{"line_number":65,"context_line":"        start_period \u003d now - datetime.timedelta(seconds\u003d10)"},{"line_number":66,"context_line":"        return now, start_period"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_get_by_instance_uuid_and_mac(self):"},{"line_number":69,"context_line":"        def _fake_bw_usage_get(context, uuid, start_period, mac, use_slave):"},{"line_number":70,"context_line":"            if start_period:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aa745d1_6a74b09b","line":67,"in_reply_to":"5aa745d1_574f6192","updated":"2015-04-16 11:28:20.000000000","message":"Sorry, this comment was meant for the object changes, not here :)","commit_id":"cf469f62112d88f3df5a882c4a723c1c4afd313a"}]}
