)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2b7193eaa366c23e5a7135e4917e4e1440af1d5c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Stepanenko \u003cdstepanenko@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-07 14:47:46 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Implementation of the first part of pci-generate-stats blueprint"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Temporarily duplicate the logic of nova.pci.stats.PciDevStats.supports_request() method"},{"line_number":10,"context_line":"into the nova.objects.PciDevicePoolList object."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a740942_3324675c","line":7,"updated":"2015-12-08 14:29:35.000000000","message":"I know this is WIP, but you really must provide useful commit subject lines. \"This is the first part\", \"This is the 2nd part\", \"This is the 3rd part\" as you\u0027ve used for this patch series is absolutely useless providing zero information about what\u0027s changing","commit_id":"ea7513aa75f5435e9295c54d06a61e0163bf8a97"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"8546f82507334b09e332e863a2871d2eb016b244","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Stepanenko \u003cdstepanenko@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-07 14:47:46 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Implementation of the first part of pci-generate-stats blueprint"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Temporarily duplicate the logic of nova.pci.stats.PciDevStats.supports_request() method"},{"line_number":10,"context_line":"into the nova.objects.PciDevicePoolList object."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a740942_27441db5","line":7,"in_reply_to":"7a740942_3324675c","updated":"2015-12-09 14:30:41.000000000","message":"Done","commit_id":"ea7513aa75f5435e9295c54d06a61e0163bf8a97"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b17289f36706111c31b7864b4ab2a8164abb716f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-12-08 15:26:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Duplicated the logic of nova.pci.stats.PciDevStats.supports_request() method"},{"line_number":8,"context_line":"into the nova.objects.PciDevicePoolList object."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ic12d9aad5cf9426c0bfd15e659c35624dab3ed0f"},{"line_number":11,"context_line":"Implements: blueprint pci-generate-stats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a740942_740f002f","line":8,"updated":"2015-12-09 11:52:53.000000000","message":"Just a nit, but I\u0027m sure eventually someone would call you on it: The usual protocol for a commit message would be very short first line describing the change, then a blank like, then the reasons for the change.\n\nAslo, the class is PciDeviceStats, not PciDevStats.","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"5e668658d06efefef8fe035519fbd7d40ea67d23","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-12-08 15:26:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Duplicated the logic of nova.pci.stats.PciDevStats.supports_request() method"},{"line_number":8,"context_line":"into the nova.objects.PciDevicePoolList object."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ic12d9aad5cf9426c0bfd15e659c35624dab3ed0f"},{"line_number":11,"context_line":"Implements: blueprint pci-generate-stats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a740942_bcf543cc","line":8,"in_reply_to":"7a740942_740f002f","updated":"2015-12-09 15:39:22.000000000","message":"Done","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"2aae92fe81d61fdd1644035861895062540b7cc4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Stepanenko \u003cdstepanenko@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-09 18:40:23 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Duplicated the logic of nova.pci.stats.PciDeviceStats support_requests and"},{"line_number":8,"context_line":"apply_requests method into the nova.objects.PciDevicePoolList object."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"This change was done as a first step to move from PciDeviceStats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a740942_50543ec9","line":7,"updated":"2015-12-09 16:50:34.000000000","message":"This summary line should be under 50 characters (see https://wiki.openstack.org/wiki/GitCommitMessages)","commit_id":"dbf982b65a9f95bf7ed0053ea40512f6e96dd143"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"700daffa366b0e0cc33796fa873a9bc904cadde1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Stepanenko \u003cdstepanenko@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-09 18:40:23 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Duplicated the logic of nova.pci.stats.PciDeviceStats support_requests and"},{"line_number":8,"context_line":"apply_requests method into the nova.objects.PciDevicePoolList object."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"This change was done as a first step to move from PciDeviceStats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a740942_110478c4","line":7,"in_reply_to":"7a740942_50543ec9","updated":"2015-12-09 17:53:51.000000000","message":"Done","commit_id":"dbf982b65a9f95bf7ed0053ea40512f6e96dd143"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e6b6c5464c58bb515a6f0546299af9a28c0dc1cb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"in a consistent way."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ic12d9aad5cf9426c0bfd15e659c35624dab3ed0f"},{"line_number":20,"context_line":"Implements: blueprint pci-generate-stats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7a740942_72bee500","line":20,"updated":"2015-12-10 14:52:54.000000000","message":"This should be pci-stats-generate","commit_id":"4089ced098900ef482a3f7329db547f402f44d02"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"8cc2fb0e9c57f96bea6f8a87215d60f6c8fd7a4e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"in a consistent way."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ic12d9aad5cf9426c0bfd15e659c35624dab3ed0f"},{"line_number":20,"context_line":"Implements: blueprint pci-generate-stats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7a740942_5292c94c","line":20,"in_reply_to":"7a740942_72bee500","updated":"2015-12-10 14:57:27.000000000","message":"Done","commit_id":"4089ced098900ef482a3f7329db547f402f44d02"}],"nova/objects/pci_device.py":[{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"fdc52dc21e1067298d9d8070cb6f8267a9e67140","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        :note If numa_cells is provided then only devices contained in"},{"line_number":494,"context_line":"              those nodes are considered."},{"line_number":495,"context_line":"        \"\"\""},{"line_number":496,"context_line":"        if numa_cells is not None:"},{"line_number":497,"context_line":"            numa_cells \u003d [None] + [cell.id for cell in numa_cells]"},{"line_number":498,"context_line":"        for request in instance_pci_requests.requests:"},{"line_number":499,"context_line":"            def matches(device):"}],"source_content_type":"text/x-python","patch_set":31,"id":"9aed3d3a_fc874010","line":496,"updated":"2016-02-25 20:20:50.000000000","message":"The comment that used to be in _filter_pools_for_numa_cells() about system that are not reporting numa node for PCI devices was useful.  It would be nice to put it back here.","commit_id":"30789146bae6cbe601979946f0b1fe21d13ee0c6"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5115483bdd97f27b1a28c2f3d11be7bfa238707f","unresolved":false,"context_lines":[{"line_number":499,"context_line":"              those nodes are considered."},{"line_number":500,"context_line":"        \"\"\""},{"line_number":501,"context_line":"        if numa_cells is not None:"},{"line_number":502,"context_line":"            numa_cells \u003d [None] + [cell.id for cell in numa_cells]"},{"line_number":503,"context_line":"        for request in instance_pci_requests.requests:"},{"line_number":504,"context_line":"            # If none of the requested PCI device specs are looking"},{"line_number":505,"context_line":"            # for an SR-IOV physical function, don\u0027t consider this"}],"source_content_type":"text/x-python","patch_set":35,"id":"9aed3d3a_ca44a41c","line":502,"updated":"2016-02-29 13:04:28.000000000","message":"I assume that this strange [None] + construct is so that device.numa_node below can be in numa_cells when it is checked? If that\u0027s the case then I think it would probably be better to do here:\n\n   numa_cell_ids \u003d [cell.id for cell in numa_cells]\n\nand then below...","commit_id":"1ff92383a994c38a4973dbbe1215ff9cb6705a57"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5115483bdd97f27b1a28c2f3d11be7bfa238707f","unresolved":false,"context_lines":[{"line_number":512,"context_line":"                if not device.is_available():"},{"line_number":513,"context_line":"                    return False"},{"line_number":514,"context_line":"                if numa_cells is not None:"},{"line_number":515,"context_line":"                    if device.numa_node not in numa_cells:"},{"line_number":516,"context_line":"                        return False"},{"line_number":517,"context_line":"                if pf_not_requested:"},{"line_number":518,"context_line":"                    if device.dev_type \u003d\u003d fields.PciDeviceType.SRIOV_PF:"}],"source_content_type":"text/x-python","patch_set":35,"id":"9aed3d3a_ca12e408","line":515,"updated":"2016-02-29 13:04:28.000000000","message":"if devnice.numa_node and device.numa_node not in numa_cells\n\nOr something like that. Or at least put a comment above to explain the prepended [None]. It requires a fair bit of thinking to understand that, and I\u0027m still not sure I\u0027ve got it right.","commit_id":"1ff92383a994c38a4973dbbe1215ff9cb6705a57"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c7ff30cbfd5a9a63dec01f599b6dd43e8fab79ad","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                # If any of the specs in the requests matches all"},{"line_number":521,"context_line":"                # conditions for the device, then it\u0027s a matching device"},{"line_number":522,"context_line":"                for spec in request.spec:"},{"line_number":523,"context_line":"                    if all(getattr(device, k) \u003d\u003d v"},{"line_number":524,"context_line":"                           for k, v in spec.items()):"},{"line_number":525,"context_line":"                        return True"},{"line_number":526,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":38,"id":"7af24918_131c5012","line":523,"range":{"start_line":523,"start_character":27,"end_line":523,"end_character":50},"updated":"2016-03-02 12:21:32.000000000","message":"So as commented on the get_all() patch - we are missing tags here. And the only way to get tags is to run\n\n  devspec \u003d whitelist.get_pci_device_devspec(dev)\n\nWhich can only be run on compute nodes since it relies on a config option that is specific to a node.\n\nThe real solution for this would be to move all of this whitelisting to the DB and make it API controllable... but right now you can\u0027t just move this to the scheduler without using pools.","commit_id":"81b985308807885502f2554aea59bf9220336f8a"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"a3dfa29721ad3a49042c38b1ed766491cf2000ca","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                # If any of the specs in the requests matches all"},{"line_number":521,"context_line":"                # conditions for the device, then it\u0027s a matching device"},{"line_number":522,"context_line":"                for spec in request.spec:"},{"line_number":523,"context_line":"                    if all(getattr(device, k) \u003d\u003d v"},{"line_number":524,"context_line":"                           for k, v in spec.items()):"},{"line_number":525,"context_line":"                        return True"},{"line_number":526,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":38,"id":"7af24918_0ee1c2fe","line":523,"range":{"start_line":523,"start_character":27,"end_line":523,"end_character":50},"in_reply_to":"7af24918_131c5012","updated":"2016-03-02 13:18:20.000000000","message":"Nikola, good catch.","commit_id":"81b985308807885502f2554aea59bf9220336f8a"}],"nova/objects/pci_device_pool.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"9b60d8c01584cedd192239bba638441c5286b2ae","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        removed_pools \u003d [pool for pool in pools if not pool.count]"},{"line_number":100,"context_line":"        if removed_pools:"},{"line_number":101,"context_line":"            non_empty_pools \u003d [pool for pool in pools if pool.count]"},{"line_number":102,"context_line":"            pools.objects \u003d non_empty_pools"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @staticmethod"},{"line_number":105,"context_line":"    def _filter_pools_for_spec(pools, request_specs):"}],"source_content_type":"text/x-python","patch_set":24,"id":"3a57f1b5_d7a67852","line":102,"updated":"2016-02-11 14:56:33.000000000","message":"Why do we need here 2 cycles? Maybe we can just write:\n\n    pools.objects \u003d [pool for pool in pools if pool.count]","commit_id":"1191487dc9d29a51e4b68d95ce92e334bd751489"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ba45bfec0c01096bb9e6557a1444161e372b14b4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def _decrease_pool_count(pool, count\u003d1):"},{"line_number":85,"context_line":"        \"\"\"Decrement pool\u0027s size by count."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        If pool becomes empty, remove pool from pool_list."},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":"        if pool.count \u003e count:"},{"line_number":90,"context_line":"            pool.count -\u003d count"}],"source_content_type":"text/x-python","patch_set":25,"id":"dae33548_5b5df213","line":87,"updated":"2016-02-17 17:46:06.000000000","message":"This bit of docstring doesn\u0027t really apply here. The removal is happening elsewhere, isn\u0027t it?","commit_id":"2e85f5a83e1d5cd2fde260a8a216da98cb6236ff"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"72f60cc4e465e53b2f08c1ea07c4db99b2fa394d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                )"},{"line_number":119,"context_line":"                for cell in numa_cells)]"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _apply_request(self, pools, request, numa_cells\u003dNone):"},{"line_number":122,"context_line":"        count \u003d request.count"},{"line_number":123,"context_line":"        matching_pools \u003d self._filter_pools_for_spec(pools, request.spec)"},{"line_number":124,"context_line":"        if numa_cells:"}],"source_content_type":"text/x-python","patch_set":25,"id":"3a57f1b5_7e4c03c8","line":121,"updated":"2016-02-12 14:41:52.000000000","message":"Why the other private methods are static and not this one ?","commit_id":"2e85f5a83e1d5cd2fde260a8a216da98cb6236ff"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b2c295e9110902512121d6270796b517baf96e2f","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @staticmethod"},{"line_number":84,"context_line":"    def _decrease_pool_count(pool, count\u003d1):"},{"line_number":85,"context_line":"        \"\"\"Decrement pool\u0027s size by count."},{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":"        if pool.count \u003e count:"},{"line_number":88,"context_line":"            pool.count -\u003d count"}],"source_content_type":"text/x-python","patch_set":27,"id":"bae84128_0e3b9ed2","line":85,"updated":"2016-02-20 11:30:57.000000000","message":"please write the docstring in one line, e.g. like https://github.com/openstack/nova/blob/master/nova/objects/instance.py#L261","commit_id":"6d25398671bc76d18284e2e8d244ec992f0a6d15"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"4526e4cbbf8e87f1205994cb3550c1c9abad7109","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @staticmethod"},{"line_number":84,"context_line":"    def _decrease_pool_count(pool, count\u003d1):"},{"line_number":85,"context_line":"        \"\"\"Decrement pool\u0027s size by count."},{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":"        if pool.count \u003e count:"},{"line_number":88,"context_line":"            pool.count -\u003d count"}],"source_content_type":"text/x-python","patch_set":27,"id":"bae84128_2ea8221f","line":85,"in_reply_to":"bae84128_0e3b9ed2","updated":"2016-02-20 12:23:18.000000000","message":"Done","commit_id":"6d25398671bc76d18284e2e8d244ec992f0a6d15"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ddf2c9eea5e9e30e7befc098582cbf158baf3028","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        pools \u003d copy.deepcopy(self)"},{"line_number":156,"context_line":"        return all([self._apply_request(pools, r, numa_cells)"},{"line_number":157,"context_line":"                        for r in requests])"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"def from_pci_stats(pci_stats):"}],"source_content_type":"text/x-python","patch_set":29,"id":"9aed3d3a_5302a43f","line":157,"updated":"2016-02-25 17:59:17.000000000","message":"This is the only method that actually needs to be ported from pci_stats.PciStats object. And it needs to be placed on the PciDeviceList object, not the PciDevicePoolList object.\n\nI will push a change to this review.","commit_id":"5fb6eb9a8a86f1fc6f1ce24bf73fcc9cc0ca53e8"}],"nova/pci/utils.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"9b60d8c01584cedd192239bba638441c5286b2ae","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def pci_device_pool_prop_match(pci_dev_pool, specs):"},{"line_number":57,"context_line":"    \"\"\"Check if the pci_device_pool meet spec requirement"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    Specs is a list of PCI device property requirements."},{"line_number":60,"context_line":"    An example of device requirement that the PCI should be either:"}],"source_content_type":"text/x-python","patch_set":24,"id":"3a57f1b5_c91ca0c3","line":57,"range":{"start_line":57,"start_character":36,"end_line":57,"end_character":40},"updated":"2016-02-11 14:56:33.000000000","message":"I see that is was copied but \u0027meets\u0027 seems correct","commit_id":"1191487dc9d29a51e4b68d95ce92e334bd751489"}],"nova/tests/unit/objects/test_pci_device_pool.py":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"e4961a119a1ea15865943db8b1e0e2c765b394cf","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class _TestPciDevicePoolListObject(object):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        def test_pci_device_pool__decrease_pool_count(self):"},{"line_number":85,"context_line":"            pool \u003d MagicMock(count\u003d5)"},{"line_number":86,"context_line":"            count \u003d 2"},{"line_number":87,"context_line":"            count \u003d\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_24093bde","line":84,"updated":"2015-12-09 14:57:16.000000000","message":"the double underscore in the middle of these names look really weird. Since this is in the TestPciDevicePoolListObject class, it\u0027s understood these tests are testing PciDevicePoolList, so these names can just change to test_decrease_pool_count(), test_decrease_pool_count_take_all_devs(), etc.","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"5e668658d06efefef8fe035519fbd7d40ea67d23","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class _TestPciDevicePoolListObject(object):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        def test_pci_device_pool__decrease_pool_count(self):"},{"line_number":85,"context_line":"            pool \u003d MagicMock(count\u003d5)"},{"line_number":86,"context_line":"            count \u003d 2"},{"line_number":87,"context_line":"            count \u003d\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_fc12eb08","line":84,"in_reply_to":"7a740942_24093bde","updated":"2015-12-09 15:39:22.000000000","message":"Done","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"e4961a119a1ea15865943db8b1e0e2c765b394cf","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        def test_pci_device_pool__decrease_pool_count_take_all_devs(self):"},{"line_number":93,"context_line":"            pool \u003d MagicMock(count\u003d1)"},{"line_number":94,"context_line":"            count \u003d 2"},{"line_number":95,"context_line":"            count \u003d\\"},{"line_number":96,"context_line":"                objects.PciDevicePoolList._decrease_pool_count(pool, count)"},{"line_number":97,"context_line":"            self.assertEqual(0, pool.count)"},{"line_number":98,"context_line":"            self.assertEqual(1, count)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_84f82fc6","line":95,"updated":"2015-12-09 14:57:16.000000000","message":"backslashes are very unappealing. You have two options here as an alternative:\n\n    count \u003d objects.PciDevicePoolList._decrease_pool_count(pool,\n                                                           count)\n\nor\n\n    count \u003d (objects.PciDevicePoolList.\n                 _decrease_pool_count(pool, count))\n\nPersonally, I like option #1 the best.","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"5e668658d06efefef8fe035519fbd7d40ea67d23","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        def test_pci_device_pool__decrease_pool_count_take_all_devs(self):"},{"line_number":93,"context_line":"            pool \u003d MagicMock(count\u003d1)"},{"line_number":94,"context_line":"            count \u003d 2"},{"line_number":95,"context_line":"            count \u003d\\"},{"line_number":96,"context_line":"                objects.PciDevicePoolList._decrease_pool_count(pool, count)"},{"line_number":97,"context_line":"            self.assertEqual(0, pool.count)"},{"line_number":98,"context_line":"            self.assertEqual(1, count)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_7c683b88","line":95,"in_reply_to":"7a740942_84f82fc6","updated":"2015-12-09 15:39:22.000000000","message":"Done","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"e4961a119a1ea15865943db8b1e0e2c765b394cf","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            )"},{"line_number":252,"context_line":"            self.assertFalse(result)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        def test_pci_device_pool_list_apply_requests(self):"},{"line_number":255,"context_line":"            pool \u003d copy.deepcopy(fake_pci.fake_pool)"},{"line_number":256,"context_line":"            pool.vendor_id \u003d \u0027vendor\u0027"},{"line_number":257,"context_line":"            pool2 \u003d copy.deepcopy(fake_pci.fake_pool)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_c424f761","line":254,"updated":"2015-12-09 14:57:16.000000000","message":"These don\u0027t have the double underscore, but you can still drop the pci_device_pool_list part.","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"5e668658d06efefef8fe035519fbd7d40ea67d23","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            )"},{"line_number":252,"context_line":"            self.assertFalse(result)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        def test_pci_device_pool_list_apply_requests(self):"},{"line_number":255,"context_line":"            pool \u003d copy.deepcopy(fake_pci.fake_pool)"},{"line_number":256,"context_line":"            pool.vendor_id \u003d \u0027vendor\u0027"},{"line_number":257,"context_line":"            pool2 \u003d copy.deepcopy(fake_pci.fake_pool)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_faec2e94","line":254,"in_reply_to":"7a740942_c424f761","updated":"2015-12-09 15:39:22.000000000","message":"Done","commit_id":"a071a2f31f1d28d75ab0b45534d98d20254d4389"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"2aae92fe81d61fdd1644035861895062540b7cc4","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        def test_decrease_pool_count_take_all_devs(self):"},{"line_number":93,"context_line":"            pool \u003d MagicMock(count\u003d1)"},{"line_number":94,"context_line":"            count \u003d 2"},{"line_number":95,"context_line":"            count \u003d\\"},{"line_number":96,"context_line":"                objects.PciDevicePoolList._decrease_pool_count(pool, count)"},{"line_number":97,"context_line":"            self.assertEqual(0, pool.count)"},{"line_number":98,"context_line":"            self.assertEqual(1, count)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_c5fe2e38","line":95,"updated":"2015-12-09 16:50:34.000000000","message":"Missed on of the backslashes","commit_id":"dbf982b65a9f95bf7ed0053ea40512f6e96dd143"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"700daffa366b0e0cc33796fa873a9bc904cadde1","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        def test_decrease_pool_count_take_all_devs(self):"},{"line_number":93,"context_line":"            pool \u003d MagicMock(count\u003d1)"},{"line_number":94,"context_line":"            count \u003d 2"},{"line_number":95,"context_line":"            count \u003d\\"},{"line_number":96,"context_line":"                objects.PciDevicePoolList._decrease_pool_count(pool, count)"},{"line_number":97,"context_line":"            self.assertEqual(0, pool.count)"},{"line_number":98,"context_line":"            self.assertEqual(1, count)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_364e4a97","line":95,"in_reply_to":"7a740942_c5fe2e38","updated":"2015-12-09 17:53:51.000000000","message":"Done","commit_id":"dbf982b65a9f95bf7ed0053ea40512f6e96dd143"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"edfc6b4c123dd82c8d6ada103513142ecf4c96e1","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import copy"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from mock import MagicMock"},{"line_number":19,"context_line":"from nova import exception"},{"line_number":20,"context_line":"from nova import objects"},{"line_number":21,"context_line":"from nova.objects import pci_device_pool"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a57f1b5_9ef146d0","line":18,"updated":"2016-02-10 12:50:57.000000000","message":"Please only import modules, not objects. So, this should just be:\n\n import mock\n\nAlso, there should be an empty newline separating the stdlib, the third party lib, and the local nova imports...\n\n import copy\n \n import mock\n \n from nova import exception\n ...","commit_id":"b01de1932a587a98c6d203535cd05d724f21c375"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"9b60d8c01584cedd192239bba638441c5286b2ae","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                numa_cells"},{"line_number":193,"context_line":"            )"},{"line_number":194,"context_line":"            self.assertEqual([pool, pool2], filtered)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        def test_apply_request(self):"},{"line_number":197,"context_line":"            pool \u003d copy.deepcopy(fake_pci.fake_pool)"},{"line_number":198,"context_line":"            pool.vendor_id \u003d \u0027vendor\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"3a57f1b5_6c2c9a02","line":195,"updated":"2016-02-11 14:56:33.000000000","message":"I like that you added many tests! Maybe we can add one test when \u0027filtered\u0027 will have nothing as a result?","commit_id":"1191487dc9d29a51e4b68d95ce92e334bd751489"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"72f60cc4e465e53b2f08c1ea07c4db99b2fa394d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertIn(\u0027numa_node\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":79,"context_line":"        pool_obj.obj_make_compatible(primitive[\u0027nova_object.data\u0027], \u00271.0\u0027)"},{"line_number":80,"context_line":"        self.assertNotIn(\u0027numa_node\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class _TestPciDevicePoolListObject(object):"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"3a57f1b5_59d7e14a","line":81,"updated":"2016-02-12 14:41:52.000000000","message":"Looks good.\n\nDoes all the unit tests from nova/tests/unit/pci/test_stats.py have been merged here (at least those who apply) ?","commit_id":"2e85f5a83e1d5cd2fde260a8a216da98cb6236ff"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b2c295e9110902512121d6270796b517baf96e2f","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            pool_list \u003d pci_device_pool.PciDevicePoolList("},{"line_number":215,"context_line":"                objects\u003d[pool, pool2]"},{"line_number":216,"context_line":"            )"},{"line_number":217,"context_line":"            spec \u003d ["},{"line_number":218,"context_line":"                {\u0027vendor_id\u0027: \u0027vendor\u0027}"},{"line_number":219,"context_line":"            ]"},{"line_number":220,"context_line":"            request \u003d mock.MagicMock(count\u003d1)"}],"source_content_type":"text/x-python","patch_set":27,"id":"bae84128_4e4c8670","line":217,"updated":"2016-02-20 11:30:57.000000000","message":"it is not important, but you can write it in a single line as you did in line #135 (the same for other places)","commit_id":"6d25398671bc76d18284e2e8d244ec992f0a6d15"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"4526e4cbbf8e87f1205994cb3550c1c9abad7109","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            pool_list \u003d pci_device_pool.PciDevicePoolList("},{"line_number":215,"context_line":"                objects\u003d[pool, pool2]"},{"line_number":216,"context_line":"            )"},{"line_number":217,"context_line":"            spec \u003d ["},{"line_number":218,"context_line":"                {\u0027vendor_id\u0027: \u0027vendor\u0027}"},{"line_number":219,"context_line":"            ]"},{"line_number":220,"context_line":"            request \u003d mock.MagicMock(count\u003d1)"}],"source_content_type":"text/x-python","patch_set":27,"id":"bae84128_8e184e86","line":217,"in_reply_to":"bae84128_4e4c8670","updated":"2016-02-20 12:23:18.000000000","message":"Done","commit_id":"6d25398671bc76d18284e2e8d244ec992f0a6d15"}]}
