)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d950a45ea660c8b7092e8c3fa57242d117a00f8e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Moshe Levi \u003cmoshele@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-29 01:34:19 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"pci: allow to assigen pci devices in pci device list"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allow the pci device list constructor to"},{"line_number":10,"context_line":"be init with list of pci devices"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_41cb0072","line":7,"updated":"2016-04-29 14:17:56.000000000","message":"s/assigen/assign","commit_id":"8b0c7d2920a238021c0cc8362156fa94ec168376"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"cd0b1ff563dc58821a54900ecc29887c82d880d9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Moshe Levi \u003cmoshele@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-29 01:34:19 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"pci: allow to assigen pci devices in pci device list"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allow the pci device list constructor to"},{"line_number":10,"context_line":"be init with list of pci devices"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_5cbf51aa","line":7,"in_reply_to":"1a122d0e_41cb0072","updated":"2016-04-30 00:24:07.000000000","message":"Done","commit_id":"8b0c7d2920a238021c0cc8362156fa94ec168376"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"926f4aecbdff2617188ccef103243079dafeff08","unresolved":false,"context_lines":[{"line_number":7,"context_line":"pci: Allow to assign pci devices in pci device list"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allow the pci device list constructor to"},{"line_number":10,"context_line":"be init with list of pci devices"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I420a79a22563c136741bda85be15f9d22d29e263"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a122d0e_8135cba9","line":10,"updated":"2016-05-03 13:41:54.000000000","message":"Jay provided a good explanation of the bug.\n\n\"Well, the original behavior was a bug :) It was allowing someone to create an PciDeviceList() object, passing in a set of PciDevice objects and then immediately setting the internal list of PciDevice objects to an empty list...\"\n\nCan we add something around this in the commit message ?  It would clarify even more what this patch is about.","commit_id":"fd3be6e1f28d3e1c30571ded4b6d5b37f449dabb"}],"nova/objects/pci_device.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e357b82fb56b7611fdaa76cd2868dba1e6ef29dd","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":467,"context_line":"        super(PciDeviceList, self).__init__(*args, **kwargs)"},{"line_number":468,"context_line":"        self.objects \u003d []"},{"line_number":469,"context_line":"        self.obj_reset_changes()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    @base.remotable_classmethod"},{"line_number":472,"context_line":"    def get_by_compute_node(cls, context, node_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_0a3918f2","side":"PARENT","line":469,"updated":"2016-04-29 17:04:50.000000000","message":"This code was actually not really a good idea before, so removing this is fine with me. But, since we\u0027ve got this code and some things might depend on it, how about we just check kwargs and only do this initialization if it\u0027s *not* passed in kwargs?\n\nIf you have already verified that we don\u0027t depend on this behavior anywhere then that\u0027s fine.","commit_id":"2b65c79934d1a0c8114560f8723a672df5fbc5a9"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4bb09108bec170b4801454f0161dc35ed0c1f8b0","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":467,"context_line":"        super(PciDeviceList, self).__init__(*args, **kwargs)"},{"line_number":468,"context_line":"        self.objects \u003d []"},{"line_number":469,"context_line":"        self.obj_reset_changes()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    @base.remotable_classmethod"},{"line_number":472,"context_line":"    def get_by_compute_node(cls, context, node_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_fce45de1","side":"PARENT","line":469,"in_reply_to":"1a122d0e_0a3918f2","updated":"2016-04-30 00:24:25.000000000","message":"Done","commit_id":"2b65c79934d1a0c8114560f8723a672df5fbc5a9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5268154ad9f51e8d6636a8d837c21a35ccb55db0","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        super(PciDeviceList, self).__init__(*args, **kwargs)"},{"line_number":468,"context_line":"        if \u0027objects\u0027 not in kwargs:"},{"line_number":469,"context_line":"            self.objects \u003d []"},{"line_number":470,"context_line":"            self.obj_reset_changes()"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    @base.remotable_classmethod"},{"line_number":473,"context_line":"    def get_by_compute_node(cls, context, node_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_5d97343a","line":470,"updated":"2016-05-02 14:18:08.000000000","message":"This should really only reset the objects field, but since that\u0027s our only field (here) I guess it doesn\u0027t matter. It was broken before, of course.","commit_id":"fd3be6e1f28d3e1c30571ded4b6d5b37f449dabb"}],"nova/tests/unit/objects/test_pci_device.py":[{"author":{"_account_id":16366,"name":"Randall Nortman","email":"openstack@nortman.net","username":"rnortman"},"change_message_id":"8e254863d9080553aca56125fc8655ba2cb75885","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            context\u003dctxt, objects\u003d[devobj])"},{"line_number":460,"context_line":"        self.assertEqual(1, len(pci_device_list))"},{"line_number":461,"context_line":"        self.assertIsInstance(pci_device_list[0], pci_device.PciDevice)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_get_by_compute_node(self):"},{"line_number":464,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":465,"context_line":"        self.mox.StubOutWithMock(db, \u0027pci_device_get_all_by_node\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_3583ac04","line":462,"updated":"2016-04-29 13:33:47.000000000","message":"Minor nit -- would ideally also test creation without arguments, to ensure that the original behavior still works.","commit_id":"8b0c7d2920a238021c0cc8362156fa94ec168376"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7ffab0ee224c9b4f156c557257ba24eb168c85a4","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            context\u003dctxt, objects\u003d[devobj])"},{"line_number":460,"context_line":"        self.assertEqual(1, len(pci_device_list))"},{"line_number":461,"context_line":"        self.assertIsInstance(pci_device_list[0], pci_device.PciDevice)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_get_by_compute_node(self):"},{"line_number":464,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":465,"context_line":"        self.mox.StubOutWithMock(db, \u0027pci_device_get_all_by_node\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_81899871","line":462,"in_reply_to":"1a122d0e_3583ac04","updated":"2016-04-29 14:14:16.000000000","message":"Well, the original behavior was a bug :) It was allowing someone to create an PciDeviceList() object, passing in a set of PciDevice objects and then immediately setting the internal list of PciDevice objects to an empty list...","commit_id":"8b0c7d2920a238021c0cc8362156fa94ec168376"}]}
