)]}'
{"doc/v3/api_samples/os-pci/hypervisors-pci-detail-resp.json":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"26f4ab40c4f5ecf9351d5034cb229eeb97d447df","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                    \"count\": 5,"},{"line_number":23,"context_line":"                    \"extra_info\": {"},{"line_number":24,"context_line":"                        \"key1\": \"value1\","},{"line_number":25,"context_line":"                        \"phys_function\": \"[[\\\"0x0000\\\", \\\"0x04\\\", \\\"0x00\\\", \\\"0x1\\\"]]\""},{"line_number":26,"context_line":"                    },"},{"line_number":27,"context_line":"                    \"keya\": \"valuea\","},{"line_number":28,"context_line":"                    \"product_id\": \"1520\","}],"source_content_type":"application/json","patch_set":11,"id":"7a016987_64ea0676","side":"PARENT","line":25,"updated":"2015-05-21 16:36:54.000000000","message":"could you please tell me why you\u0027re not providing again the phys_function key ?","commit_id":"c13f693d496f4ea5dbc78244fefd9ec2d6ea8de5"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"7a74d56a0bcd1b8ebf11524ec30fd52f067dd409","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                    \"count\": 5,"},{"line_number":23,"context_line":"                    \"extra_info\": {"},{"line_number":24,"context_line":"                        \"key1\": \"value1\","},{"line_number":25,"context_line":"                        \"phys_function\": \"[[\\\"0x0000\\\", \\\"0x04\\\", \\\"0x00\\\", \\\"0x1\\\"]]\""},{"line_number":26,"context_line":"                    },"},{"line_number":27,"context_line":"                    \"keya\": \"valuea\","},{"line_number":28,"context_line":"                    \"product_id\": \"1520\","}],"source_content_type":"application/json","patch_set":11,"id":"7a016987_57c0ba4f","side":"PARENT","line":25,"in_reply_to":"7a016987_64ea0676","updated":"2015-05-22 22:51:56.000000000","message":"These were mostly arbitrary keys, but pyhs_function was intended for a specific purpose. Now phys_function is not used so I thought leaving it would be confusing.","commit_id":"c13f693d496f4ea5dbc78244fefd9ec2d6ea8de5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5f99c41cf9b212069f08606d4661ada52630e0be","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                    \"count\": 5,"},{"line_number":23,"context_line":"                    \"extra_info\": {"},{"line_number":24,"context_line":"                        \"key1\": \"value1\","},{"line_number":25,"context_line":"                        \"phys_function\": \"[[\\\"0x0000\\\", \\\"0x04\\\", \\\"0x00\\\", \\\"0x1\\\"]]\""},{"line_number":26,"context_line":"                    },"},{"line_number":27,"context_line":"                    \"keya\": \"valuea\","},{"line_number":28,"context_line":"                    \"product_id\": \"1520\","}],"source_content_type":"application/json","patch_set":13,"id":"7a016987_40eb96dc","side":"PARENT","line":25,"updated":"2015-05-29 12:40:00.000000000","message":"Hmm why do we drop phys_function here? shouldn\u0027t it also just be part of the dict like key1?","commit_id":"71b719c26bf2c6e3431b3f45ffb46c51432a72d0"}],"nova/objects/pci_device_pool.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ecbfcba0a908037866687b8bbd1272b521b32b03","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        pool.vendor_id \u003d pool_dict.pop(\"vendor_id\")"},{"line_number":45,"context_line":"        pool.product_id \u003d pool_dict.pop(\"product_id\")"},{"line_number":46,"context_line":"        pool.count \u003d pool_dict.pop(\"count\")"},{"line_number":47,"context_line":"        pool.tags \u003d pool_dict"},{"line_number":48,"context_line":"        return pool"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    # NOTE(sbauza): Before using objects, pci stats was a list of"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_b49431e2","line":47,"updated":"2015-04-07 23:09:03.000000000","message":"nit: a comment would be worth it to make sure we don\u0027t reproduce that kind of errors","commit_id":"622a0f3bc185ab2b5ec569fa85fbb571b15ecbc0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"26f4ab40c4f5ecf9351d5034cb229eeb97d447df","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        pool.product_id \u003d pool_dict.pop(\"product_id\")"},{"line_number":54,"context_line":"        pool.numa_node \u003d pool_dict.pop(\"numa_node\", None)"},{"line_number":55,"context_line":"        pool.count \u003d pool_dict.pop(\"count\")"},{"line_number":56,"context_line":"        pool.tags \u003d pool_dict"},{"line_number":57,"context_line":"        return pool"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # NOTE(sbauza): Before using objects, pci stats was a list of"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_a4c23ee7","line":56,"updated":"2015-05-21 16:36:54.000000000","message":"I don\u0027t see a new unittest covering the bug you mentioned in the commit msg, just a modification of the existing tests. Is that right?","commit_id":"b9cf1f9e40176bf90e52e16e774ad36858f419fd"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"7a74d56a0bcd1b8ebf11524ec30fd52f067dd409","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        pool.product_id \u003d pool_dict.pop(\"product_id\")"},{"line_number":54,"context_line":"        pool.numa_node \u003d pool_dict.pop(\"numa_node\", None)"},{"line_number":55,"context_line":"        pool.count \u003d pool_dict.pop(\"count\")"},{"line_number":56,"context_line":"        pool.tags \u003d pool_dict"},{"line_number":57,"context_line":"        return pool"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # NOTE(sbauza): Before using objects, pci stats was a list of"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_d7ccaa8a","line":56,"in_reply_to":"7a016987_a4c23ee7","updated":"2015-05-22 22:51:56.000000000","message":"Done","commit_id":"b9cf1f9e40176bf90e52e16e774ad36858f419fd"}],"nova/pci/stats.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4ce5506ae478b98c5ccbd1fa7c32d44c97e216f4","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def to_device_pools_obj(self):"},{"line_number":254,"context_line":"        \"\"\"Return the contents of the pools as a PciDevicePoolList object.\"\"\""},{"line_number":255,"context_line":"        stats \u003d [x for x in self]"},{"line_number":256,"context_line":"        return pci_device_pool.from_pci_stats(stats)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_4325b0c0","line":255,"updated":"2015-03-12 14:45:24.000000000","message":"this line can be justa list(self)","commit_id":"3bb8e87fcd3ca4e18aad08f3083e2b2c2b30c86d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ecbfcba0a908037866687b8bbd1272b521b32b03","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    def to_device_pools_obj(self):"},{"line_number":254,"context_line":"        \"\"\"Return the contents of the pools as a PciDevicePoolList object.\"\"\""},{"line_number":255,"context_line":"        stats \u003d [x for x in self]"},{"line_number":256,"context_line":"        return pci_device_pool.from_pci_stats(stats)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_b4f3119e","line":256,"updated":"2015-04-07 23:09:03.000000000","message":"nit : well, it sounds useless if only called by an unittest...","commit_id":"622a0f3bc185ab2b5ec569fa85fbb571b15ecbc0"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"28abd8f756d7a518418f739d214393f0878d4d53","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    def to_device_pools_obj(self):"},{"line_number":254,"context_line":"        \"\"\"Return the contents of the pools as a PciDevicePoolList object.\"\"\""},{"line_number":255,"context_line":"        stats \u003d [x for x in self]"},{"line_number":256,"context_line":"        return pci_device_pool.from_pci_stats(stats)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_9c4ca243","line":256,"in_reply_to":"9aa53dc9_b4f3119e","updated":"2015-04-08 11:30:20.000000000","message":"This change is in preparation for RT using ComputeNode. If you look at the dependant change you\u0027ll see this used in a number of places in RT: https://review.openstack.org/#/c/160942/11/nova/compute/resource_tracker.py","commit_id":"622a0f3bc185ab2b5ec569fa85fbb571b15ecbc0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5f99c41cf9b212069f08606d4661ada52630e0be","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def __ne__(self, other):"},{"line_number":257,"context_line":"        return not (self \u003d\u003d other)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def to_device_pools_obj(self):"},{"line_number":260,"context_line":"        \"\"\"Return the contents of the pools as a PciDevicePoolList object.\"\"\""},{"line_number":261,"context_line":"        stats \u003d [x for x in self]"},{"line_number":262,"context_line":"        return pci_device_pool.from_pci_stats(stats)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_00e35eda","line":259,"updated":"2015-05-29 12:40:00.000000000","message":"So this actually returns a list object so the name is kind of misleading - also it\u0027s really just one method call - do we need another method for this?","commit_id":"f1a0d852c8754fca64fbd1c1f331989ee8d9d007"}],"nova/tests/functional/v3/test_pci.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4ce5506ae478b98c5ccbd1fa7c32d44c97e216f4","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                           \"phys_function\": \u0027[[\"0x0000\", \u0027"},{"line_number":139,"context_line":"                                                            \u0027\"0x04\", \"0x00\",\u0027"},{"line_number":140,"context_line":"                                                            \u0027 \"0x1\"]]\u0027,"},{"line_number":141,"context_line":"                                           \"key1\": \"value1\"}}),)"},{"line_number":142,"context_line":"        self.fake_service \u003d objects.Service("},{"line_number":143,"context_line":"            id\u003d2,"},{"line_number":144,"context_line":"            host\u003d\u0027043b3cacf6f34c90a7245151fc8ebcda\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_866256d6","side":"PARENT","line":141,"updated":"2015-03-12 14:45:24.000000000","message":"OK here it makes sense - but why drop the phys_function, it will get picked up","commit_id":"bcea0c26b3cfaa251bdc1ef369810e8f521722f5"}],"nova/tests/unit/pci/test_stats.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ecbfcba0a908037866687b8bbd1272b521b32b03","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                          self.fake_dev_2)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_object_create(self):"},{"line_number":100,"context_line":"        m \u003d self.pci_stats.to_device_pools_obj()"},{"line_number":101,"context_line":"        new_stats \u003d stats.PciDeviceStats(m)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.assertEqual(len(new_stats.pools), 3)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_345b8189","line":100,"updated":"2015-04-07 23:09:03.000000000","message":"again, I don\u0027t see the point of this being changed ? \nI mean, the new method you\u0027re adding is just proxying the call to .from_pci_stats(), nope ?\n\nThe only change is related to how you provide the args, here by using the iterator over pools which is different from the direct pools attribute, but is it related to the bug you mention ?","commit_id":"622a0f3bc185ab2b5ec569fa85fbb571b15ecbc0"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"28abd8f756d7a518418f739d214393f0878d4d53","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                          self.fake_dev_2)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_object_create(self):"},{"line_number":100,"context_line":"        m \u003d self.pci_stats.to_device_pools_obj()"},{"line_number":101,"context_line":"        new_stats \u003d stats.PciDeviceStats(m)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.assertEqual(len(new_stats.pools), 3)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_f702a908","line":100,"in_reply_to":"9aa53dc9_345b8189","updated":"2015-04-08 11:30:20.000000000","message":"This looks a little odd here because it is the only place the change is used in this patch set. It is cleaner to put all the logic in pci_stats and also easier to read. It is used in several places in the dependant patch set as mentioned in the comment where to_device_pools_obj() is defined.","commit_id":"622a0f3bc185ab2b5ec569fa85fbb571b15ecbc0"}]}
