)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3782,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"},{"line_number":3783,"context_line":"                self.assertEqual(\"strict\", memnode.mode)"},{"line_number":3784,"context_line":""},{"line_number":3785,"context_line":"    def test_get_guest_config_numa_host_instance_cpu_mixed(self):"},{"line_number":3786,"context_line":"        self.flags(cpu_shared_set\u003d\u00272-5,8-29\u0027,"},{"line_number":3787,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3788,"context_line":"                   group\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_1e97823c","line":3785,"range":{"start_line":3785,"start_character":4,"end_line":3785,"end_character":65},"updated":"2020-06-22 12:29:02.000000000","message":"Can I get a docstring for each of these?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3782,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"},{"line_number":3783,"context_line":"                self.assertEqual(\"strict\", memnode.mode)"},{"line_number":3784,"context_line":""},{"line_number":3785,"context_line":"    def test_get_guest_config_numa_host_instance_cpu_mixed(self):"},{"line_number":3786,"context_line":"        self.flags(cpu_shared_set\u003d\u00272-5,8-29\u0027,"},{"line_number":3787,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3788,"context_line":"                   group\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_272f7d88","line":3785,"range":{"start_line":3785,"start_character":4,"end_line":3785,"end_character":65},"in_reply_to":"bf51134e_1e97823c","updated":"2020-06-29 11:43:03.000000000","message":"Added a docstring to this test, and tests in #L3874 and #L3950.\n\nDone","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3787,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3788,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":3789,"context_line":""},{"line_number":3790,"context_line":"        instance_topology \u003d objects.InstanceNUMATopology("},{"line_number":3791,"context_line":"            cells\u003d[objects.InstanceNUMACell("},{"line_number":3792,"context_line":"                id\u003d3, cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d1024,"},{"line_number":3793,"context_line":"                cpu_pinning\u003d{2: 30, 3: 31}),"},{"line_number":3794,"context_line":"                objects.InstanceNUMACell("},{"line_number":3795,"context_line":"                    id\u003d0, cpuset\u003dset([4, 5, 6]), pcpuset\u003dset([7]), memory\u003d1024,"},{"line_number":3796,"context_line":"                    cpu_pinning\u003d{7: 6})])"},{"line_number":3797,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_bed93658","line":3794,"range":{"start_line":3790,"start_character":8,"end_line":3794,"end_character":41},"updated":"2020-06-22 12:29:02.000000000","message":"The wrapping here is funky. Try:\n\n  instance_topology \u003d objects.InstanceNUMATopology(cells\u003d[\n      objects.InstanceNUMACell(\n          id\u003d3, cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d1024,\n          cpu_pinning\u003d{2: 30, 3: 31},\n      ),\n      objects.InstanceNUMACell(\n          ...\n      ),\n  ])","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"028fc5313ae934c68c716d60da791c3c34819ebc","unresolved":false,"context_lines":[{"line_number":3787,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3788,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":3789,"context_line":""},{"line_number":3790,"context_line":"        instance_topology \u003d objects.InstanceNUMATopology("},{"line_number":3791,"context_line":"            cells\u003d[objects.InstanceNUMACell("},{"line_number":3792,"context_line":"                id\u003d3, cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d1024,"},{"line_number":3793,"context_line":"                cpu_pinning\u003d{2: 30, 3: 31}),"},{"line_number":3794,"context_line":"                objects.InstanceNUMACell("},{"line_number":3795,"context_line":"                    id\u003d0, cpuset\u003dset([4, 5, 6]), pcpuset\u003dset([7]), memory\u003d1024,"},{"line_number":3796,"context_line":"                    cpu_pinning\u003d{7: 6})])"},{"line_number":3797,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_1820cff6","line":3794,"range":{"start_line":3790,"start_character":8,"end_line":3794,"end_character":41},"in_reply_to":"bf51134e_677b358b","updated":"2020-06-29 12:21:15.000000000","message":"\u003e My only concern about the trailing comma is if we added a comma for\n \u003e that, then we have to make changes to all InstanceNUMACell object,\n \u003e and should we apply this trailing comma to all OVO objects?\n\nNo, there\u0027s no need to worry about existing code. It\u0027s just generally good practice and because you\u0027re writing new code, we should add it here.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3787,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3788,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":3789,"context_line":""},{"line_number":3790,"context_line":"        instance_topology \u003d objects.InstanceNUMATopology("},{"line_number":3791,"context_line":"            cells\u003d[objects.InstanceNUMACell("},{"line_number":3792,"context_line":"                id\u003d3, cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d1024,"},{"line_number":3793,"context_line":"                cpu_pinning\u003d{2: 30, 3: 31}),"},{"line_number":3794,"context_line":"                objects.InstanceNUMACell("},{"line_number":3795,"context_line":"                    id\u003d0, cpuset\u003dset([4, 5, 6]), pcpuset\u003dset([7]), memory\u003d1024,"},{"line_number":3796,"context_line":"                    cpu_pinning\u003d{7: 6})])"},{"line_number":3797,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_677b358b","line":3794,"range":{"start_line":3790,"start_character":8,"end_line":3794,"end_character":41},"in_reply_to":"bf51134e_bed93658","updated":"2020-06-29 11:43:03.000000000","message":"Only one thing, the trailing comma, and you have left your comment on this in the review of the first patch of this series. Again, I\u0027d like to get your further comment on this. \n\nMy only concern about the trailing comma is if we added a comma for that, then we have to make changes to all InstanceNUMACell object, and should we apply this trailing comma to all OVO objects?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3814,"context_line":"                                            image_meta)"},{"line_number":3815,"context_line":""},{"line_number":3816,"context_line":"        with test.nested("},{"line_number":3817,"context_line":"                mock.patch.object("},{"line_number":3818,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3819,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3820,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_1edb024f","line":3817,"range":{"start_line":3817,"start_character":12,"end_line":3817,"end_character":16},"updated":"2020-06-22 12:29:02.000000000","message":"nit","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3814,"context_line":"                                            image_meta)"},{"line_number":3815,"context_line":""},{"line_number":3816,"context_line":"        with test.nested("},{"line_number":3817,"context_line":"                mock.patch.object("},{"line_number":3818,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3819,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3820,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_c7a321ff","line":3817,"range":{"start_line":3817,"start_character":12,"end_line":3817,"end_character":16},"in_reply_to":"bf51134e_1edb024f","updated":"2020-06-29 11:43:03.000000000","message":"In this file, there are some places using an 8 spaces indentation, e.g. #L2496, and some places using the 4 spaces indentation, e.g. #L2246, for this \u0027with test.nested()\u0027 block. The coding style, that is the indentation for this case, is not consistent in this file.\n\nAfter looking through more py files in Nova project I accept your style, 4 spaces indentation, and will fix the inconsistency problem in my new commit. [Later, there are huge lines take the 8 spaces indentation for this \u0027with\u0027 statement, I\u0027ll submit a new patch for fixing this.]\n\nAnother thing, my Pycharm IDE automatically places an 8 spaces indention here when I perform the \u0027reformatting\u0027 command. It doesn\u0027t violate PEP8 rules but seems I shouldn\u0027t rely on my Pycharm indention rule for this case.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"028fc5313ae934c68c716d60da791c3c34819ebc","unresolved":false,"context_lines":[{"line_number":3814,"context_line":"                                            image_meta)"},{"line_number":3815,"context_line":""},{"line_number":3816,"context_line":"        with test.nested("},{"line_number":3817,"context_line":"                mock.patch.object("},{"line_number":3818,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3819,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3820,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_785d8b77","line":3817,"range":{"start_line":3817,"start_character":12,"end_line":3817,"end_character":16},"in_reply_to":"bf51134e_c7a321ff","updated":"2020-06-29 12:21:15.000000000","message":"\u003e In this file, there are some places using an 8 spaces indentation,\n \u003e e.g. #L2496, and some places using the 4 spaces indentation, e.g.\n \u003e #L2246, for this \u0027with test.nested()\u0027 block. The coding style, that\n \u003e is the indentation for this case, is not consistent in this file.\n \u003e \n \u003e After looking through more py files in Nova project I accept your\n \u003e style, 4 spaces indentation, and will fix the inconsistency problem\n \u003e in my new commit. [Later, there are huge lines take the 8 spaces\n \u003e indentation for this \u0027with\u0027 statement, I\u0027ll submit a new patch for\n \u003e fixing this.]\n\nTo be clear, I\u0027m only suggesting this for new code. You don\u0027t need to edit existing code.\n\n \u003e Another thing, my Pycharm IDE automatically places an 8 spaces\n \u003e indention here when I perform the \u0027reformatting\u0027 command. It\n \u003e doesn\u0027t violate PEP8 rules but seems I shouldn\u0027t rely on my Pycharm\n \u003e indention rule for this case.\n\nYes, Vim uses 8 spaces as well, but tools like black use 4 spaces. As you note, both are pep8 compatible, meaning that is not a factor. 4 spaces simply results in less wrapping so this should be preferred (for new/modified code!)","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3818,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3819,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3820,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"},{"line_number":3821,"context_line":"                                  return_value\u003dTrue),"},{"line_number":3822,"context_line":"                mock.patch.object(host.Host, \"get_capabilities\","},{"line_number":3823,"context_line":"                                  return_value\u003dcaps),"},{"line_number":3824,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_9eeef2ea","line":3821,"updated":"2020-06-22 12:29:02.000000000","message":"this should fit on one line if you dedent","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3818,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3819,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3820,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"},{"line_number":3821,"context_line":"                                  return_value\u003dTrue),"},{"line_number":3822,"context_line":"                mock.patch.object(host.Host, \"get_capabilities\","},{"line_number":3823,"context_line":"                                  return_value\u003dcaps),"},{"line_number":3824,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_47ab9173","line":3821,"in_reply_to":"bf51134e_9eeef2ea","updated":"2020-06-29 11:43:03.000000000","message":"Done.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3827,"context_line":"            cfg \u003d conn._get_guest_config(instance_ref, [],"},{"line_number":3828,"context_line":"                                         image_meta, disk_info)"},{"line_number":3829,"context_line":"            self.assertIsNone(cfg.cpuset)"},{"line_number":3830,"context_line":"            # Test that the pinning is correct and limited to allowed only"},{"line_number":3831,"context_line":"            self.assertEqual(0, cfg.cputune.vcpupin[0].id)"},{"line_number":3832,"context_line":"            self.assertEqual(set(range(24, 30)), cfg.cputune.vcpupin[0].cpuset)"},{"line_number":3833,"context_line":"            self.assertEqual(1, cfg.cputune.vcpupin[1].id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_7eeb1edb","line":3830,"range":{"start_line":3830,"start_character":62,"end_line":3830,"end_character":74},"updated":"2020-06-22 12:29:02.000000000","message":"pinned vCPUs only","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3827,"context_line":"            cfg \u003d conn._get_guest_config(instance_ref, [],"},{"line_number":3828,"context_line":"                                         image_meta, disk_info)"},{"line_number":3829,"context_line":"            self.assertIsNone(cfg.cpuset)"},{"line_number":3830,"context_line":"            # Test that the pinning is correct and limited to allowed only"},{"line_number":3831,"context_line":"            self.assertEqual(0, cfg.cputune.vcpupin[0].id)"},{"line_number":3832,"context_line":"            self.assertEqual(set(range(24, 30)), cfg.cputune.vcpupin[0].cpuset)"},{"line_number":3833,"context_line":"            self.assertEqual(1, cfg.cputune.vcpupin[1].id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_27a65dac","line":3830,"range":{"start_line":3830,"start_character":62,"end_line":3830,"end_character":74},"in_reply_to":"bf51134e_7eeb1edb","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3853,"context_line":"                set([2, 3, 4, 5, 6, 24, 25, 26, 27, 28, 29, 30, 31]),"},{"line_number":3854,"context_line":"                cfg.cputune.emulatorpin.cpuset)"},{"line_number":3855,"context_line":""},{"line_number":3856,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3857,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3858,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3859,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_9ec71265","line":3856,"range":{"start_line":3856,"start_character":63,"end_line":3856,"end_character":67},"updated":"2020-06-22 12:29:02.000000000","message":"nit: can you drag this down?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3853,"context_line":"                set([2, 3, 4, 5, 6, 24, 25, 26, 27, 28, 29, 30, 31]),"},{"line_number":3854,"context_line":"                cfg.cputune.emulatorpin.cpuset)"},{"line_number":3855,"context_line":""},{"line_number":3856,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3857,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3858,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3859,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_024d073d","line":3856,"range":{"start_line":3856,"start_character":63,"end_line":3856,"end_character":67},"in_reply_to":"bf51134e_9ec71265","updated":"2020-06-29 11:43:03.000000000","message":"Yes. I can. Actually I just copy and paste this code from #L3766, and this style is used in some places else, I\u0027ll fix them all in one batch.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3854,"context_line":"                cfg.cputune.emulatorpin.cpuset)"},{"line_number":3855,"context_line":""},{"line_number":3856,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3857,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3858,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3859,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"},{"line_number":3860,"context_line":"                                 numa_cfg_cell.cpus)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_bea776bd","line":3857,"range":{"start_line":3857,"start_character":64,"end_line":3857,"end_character":66},"updated":"2020-06-22 12:29:02.000000000","message":"put this on the next line?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3854,"context_line":"                cfg.cputune.emulatorpin.cpuset)"},{"line_number":3855,"context_line":""},{"line_number":3856,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3857,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3858,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3859,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"},{"line_number":3860,"context_line":"                                 numa_cfg_cell.cpus)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_e247331c","line":3857,"range":{"start_line":3857,"start_character":64,"end_line":3857,"end_character":66},"in_reply_to":"bf51134e_bea776bd","updated":"2020-06-29 11:43:03.000000000","message":"Sure. And also this code is copy-paste from other places, I\u0027ll fix them also in next update.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3902,"context_line":"                                            image_meta)"},{"line_number":3903,"context_line":""},{"line_number":3904,"context_line":"        with test.nested("},{"line_number":3905,"context_line":"                mock.patch.object("},{"line_number":3906,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3907,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3908,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_1e82e200","line":3905,"range":{"start_line":3905,"start_character":12,"end_line":3905,"end_character":16},"updated":"2020-06-22 12:29:02.000000000","message":"nit","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3902,"context_line":"                                            image_meta)"},{"line_number":3903,"context_line":""},{"line_number":3904,"context_line":"        with test.nested("},{"line_number":3905,"context_line":"                mock.patch.object("},{"line_number":3906,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3907,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3908,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_42537fe2","line":3905,"range":{"start_line":3905,"start_character":12,"end_line":3905,"end_character":16},"in_reply_to":"bf51134e_1e82e200","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3924,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[2].cpuset)"},{"line_number":3925,"context_line":"            self.assertIsNotNone(cfg.cpu.numa)"},{"line_number":3926,"context_line":""},{"line_number":3927,"context_line":"            # Emulator must be pinned to union of cfg.cputune.vcpupin[*].cpuset"},{"line_number":3928,"context_line":"            self.assertIsInstance(cfg.cputune.emulatorpin,"},{"line_number":3929,"context_line":"                                  vconfig.LibvirtConfigGuestCPUTuneEmulatorPin)"},{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_fe860e13","line":3927,"range":{"start_line":3927,"start_character":12,"end_line":3927,"end_character":79},"updated":"2020-06-22 12:29:02.000000000","message":"This isn\u0027t true here","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"028fc5313ae934c68c716d60da791c3c34819ebc","unresolved":false,"context_lines":[{"line_number":3924,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[2].cpuset)"},{"line_number":3925,"context_line":"            self.assertIsNotNone(cfg.cpu.numa)"},{"line_number":3926,"context_line":""},{"line_number":3927,"context_line":"            # Emulator must be pinned to union of cfg.cputune.vcpupin[*].cpuset"},{"line_number":3928,"context_line":"            self.assertIsInstance(cfg.cputune.emulatorpin,"},{"line_number":3929,"context_line":"                                  vconfig.LibvirtConfigGuestCPUTuneEmulatorPin)"},{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_58f24771","line":3927,"range":{"start_line":3927,"start_character":12,"end_line":3927,"end_character":79},"in_reply_to":"bf51134e_0276a770","updated":"2020-06-29 12:21:15.000000000","message":"\u003e Changed it to:\n \u003e # With an ISOLATE policy, emulator thread will be pinned to the\n \u003e reserved host CPU.\n\nYes, this is better","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3924,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[2].cpuset)"},{"line_number":3925,"context_line":"            self.assertIsNotNone(cfg.cpu.numa)"},{"line_number":3926,"context_line":""},{"line_number":3927,"context_line":"            # Emulator must be pinned to union of cfg.cputune.vcpupin[*].cpuset"},{"line_number":3928,"context_line":"            self.assertIsInstance(cfg.cputune.emulatorpin,"},{"line_number":3929,"context_line":"                                  vconfig.LibvirtConfigGuestCPUTuneEmulatorPin)"},{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_0276a770","line":3927,"range":{"start_line":3927,"start_character":12,"end_line":3927,"end_character":79},"in_reply_to":"bf51134e_fe860e13","updated":"2020-06-29 11:43:03.000000000","message":"Changed it to:\n# With an ISOLATE policy, emulator thread will be pinned to the reserved host CPU.\n\nDone","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3929,"context_line":"                                  vconfig.LibvirtConfigGuestCPUTuneEmulatorPin)"},{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"},{"line_number":3931,"context_line":""},{"line_number":3932,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3933,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3934,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3935,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_3e7c061e","line":3932,"range":{"start_line":3932,"start_character":63,"end_line":3932,"end_character":67},"updated":"2020-06-22 12:29:02.000000000","message":"drag this down","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3929,"context_line":"                                  vconfig.LibvirtConfigGuestCPUTuneEmulatorPin)"},{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"},{"line_number":3931,"context_line":""},{"line_number":3932,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3933,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3934,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3935,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_224e4b37","line":3932,"range":{"start_line":3932,"start_character":63,"end_line":3932,"end_character":67},"in_reply_to":"bf51134e_3e7c061e","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"},{"line_number":3931,"context_line":""},{"line_number":3932,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3933,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3934,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3935,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"},{"line_number":3936,"context_line":"                                 numa_cfg_cell.cpus)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_7e72fe4a","line":3933,"range":{"start_line":3933,"start_character":64,"end_line":3933,"end_character":66},"updated":"2020-06-22 12:29:02.000000000","message":"and this","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3930,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"},{"line_number":3931,"context_line":""},{"line_number":3932,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate(zip("},{"line_number":3933,"context_line":"                    instance_topology.cells, cfg.cpu.numa.cells)):"},{"line_number":3934,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3935,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"},{"line_number":3936,"context_line":"                                 numa_cfg_cell.cpus)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_8262b7ac","line":3933,"range":{"start_line":3933,"start_character":64,"end_line":3933,"end_character":66},"in_reply_to":"bf51134e_7e72fe4a","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3942,"context_line":"            self.assertEqual(allnodes, set(cfg.numatune.memory.nodeset))"},{"line_number":3943,"context_line":"            self.assertEqual(\"strict\", cfg.numatune.memory.mode)"},{"line_number":3944,"context_line":""},{"line_number":3945,"context_line":"            for i, (instance_cell, memnode) in enumerate(zip("},{"line_number":3946,"context_line":"                    instance_topology.cells, cfg.numatune.memnodes)):"},{"line_number":3947,"context_line":"                self.assertEqual(i, memnode.cellid)"},{"line_number":3948,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"},{"line_number":3949,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_de906a46","line":3946,"range":{"start_line":3945,"start_character":57,"end_line":3946,"end_character":69},"updated":"2020-06-22 12:29:02.000000000","message":"ditto\n\n(and below)","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3942,"context_line":"            self.assertEqual(allnodes, set(cfg.numatune.memory.nodeset))"},{"line_number":3943,"context_line":"            self.assertEqual(\"strict\", cfg.numatune.memory.mode)"},{"line_number":3944,"context_line":""},{"line_number":3945,"context_line":"            for i, (instance_cell, memnode) in enumerate(zip("},{"line_number":3946,"context_line":"                    instance_topology.cells, cfg.numatune.memnodes)):"},{"line_number":3947,"context_line":"                self.assertEqual(i, memnode.cellid)"},{"line_number":3948,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"},{"line_number":3949,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_6265e3b4","line":3946,"range":{"start_line":3945,"start_character":57,"end_line":3946,"end_character":69},"in_reply_to":"bf51134e_de906a46","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":3991,"context_line":"                                            image_meta)"},{"line_number":3992,"context_line":""},{"line_number":3993,"context_line":"        with test.nested("},{"line_number":3994,"context_line":"                mock.patch.object("},{"line_number":3995,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3996,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3997,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"},{"line_number":3998,"context_line":"                                  return_value\u003dTrue),"},{"line_number":3999,"context_line":"                mock.patch.object(host.Host, \"get_capabilities\","},{"line_number":4000,"context_line":"                                  return_value\u003dcaps),"},{"line_number":4001,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":4002,"context_line":"                                  return_value\u003dset(range(32))),"},{"line_number":4003,"context_line":"                ):"},{"line_number":4004,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":4005,"context_line":"                                         image_meta, disk_info)"},{"line_number":4006,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_5ea45aa6","line":4003,"range":{"start_line":3994,"start_character":0,"end_line":4003,"end_character":18},"updated":"2020-06-22 12:29:02.000000000","message":"dedent","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":3991,"context_line":"                                            image_meta)"},{"line_number":3992,"context_line":""},{"line_number":3993,"context_line":"        with test.nested("},{"line_number":3994,"context_line":"                mock.patch.object("},{"line_number":3995,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3996,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3997,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"},{"line_number":3998,"context_line":"                                  return_value\u003dTrue),"},{"line_number":3999,"context_line":"                mock.patch.object(host.Host, \"get_capabilities\","},{"line_number":4000,"context_line":"                                  return_value\u003dcaps),"},{"line_number":4001,"context_line":"                mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":4002,"context_line":"                                  return_value\u003dset(range(32))),"},{"line_number":4003,"context_line":"                ):"},{"line_number":4004,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":4005,"context_line":"                                         image_meta, disk_info)"},{"line_number":4006,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_c2582ffb","line":4003,"range":{"start_line":3994,"start_character":0,"end_line":4003,"end_character":18},"in_reply_to":"bf51134e_5ea45aa6","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3862,"context_line":"            mock.patch.object(host.Host, \"get_capabilities\","},{"line_number":3863,"context_line":"                              return_value\u003dcaps),"},{"line_number":3864,"context_line":"            mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":3865,"context_line":"                              return_value\u003dset(range(32)))):"},{"line_number":3866,"context_line":"            cfg \u003d conn._get_guest_config(instance_ref, [],"},{"line_number":3867,"context_line":"                                         image_meta, disk_info)"},{"line_number":3868,"context_line":"            self.assertIsNone(cfg.cpuset)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_47ee1f22","line":3865,"range":{"start_line":3865,"start_character":58,"end_line":3865,"end_character":60},"updated":"2020-07-14 09:32:01.000000000","message":"nit: it\u0027d be nice if you dragged this down to the next line and dedented it","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3862,"context_line":"            mock.patch.object(host.Host, \"get_capabilities\","},{"line_number":3863,"context_line":"                              return_value\u003dcaps),"},{"line_number":3864,"context_line":"            mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":3865,"context_line":"                              return_value\u003dset(range(32)))):"},{"line_number":3866,"context_line":"            cfg \u003d conn._get_guest_config(instance_ref, [],"},{"line_number":3867,"context_line":"                                         image_meta, disk_info)"},{"line_number":3868,"context_line":"            self.assertIsNone(cfg.cpuset)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_a266f84f","line":3865,"range":{"start_line":3865,"start_character":58,"end_line":3865,"end_character":60},"in_reply_to":"bf51134e_47ee1f22","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3883,"context_line":"            self.assertEqual(set(range(2, 6)), cfg.cputune.vcpupin[6].cpuset)"},{"line_number":3884,"context_line":"            self.assertEqual(7, cfg.cputune.vcpupin[7].id)"},{"line_number":3885,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[7].cpuset)"},{"line_number":3886,"context_line":"            self.assertIsNotNone(cfg.cpu.numa)"},{"line_number":3887,"context_line":""},{"line_number":3888,"context_line":"            # Emulator must be pinned to union of cfg.cputune.vcpupin[*].cpuset"},{"line_number":3889,"context_line":"            self.assertIsInstance(cfg.cputune.emulatorpin,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_07b9c713","line":3886,"updated":"2020-07-14 09:32:01.000000000","message":"grouping these by pinned and unpinned rather than listing these linearly might make them a bit easier to grok","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3883,"context_line":"            self.assertEqual(set(range(2, 6)), cfg.cputune.vcpupin[6].cpuset)"},{"line_number":3884,"context_line":"            self.assertEqual(7, cfg.cputune.vcpupin[7].id)"},{"line_number":3885,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[7].cpuset)"},{"line_number":3886,"context_line":"            self.assertIsNotNone(cfg.cpu.numa)"},{"line_number":3887,"context_line":""},{"line_number":3888,"context_line":"            # Emulator must be pinned to union of cfg.cputune.vcpupin[*].cpuset"},{"line_number":3889,"context_line":"            self.assertIsInstance(cfg.cputune.emulatorpin,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_a2c278e7","line":3886,"in_reply_to":"bf51134e_07b9c713","updated":"2020-07-14 16:36:07.000000000","message":"I\u0027d like to group them by the NUMA cell, then the pinned and unpinned CPUs.\n\nAnd also for all newly introduced test cases.","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3893,"context_line":"                cfg.cputune.emulatorpin.cpuset)"},{"line_number":3894,"context_line":""},{"line_number":3895,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate("},{"line_number":3896,"context_line":"                    zip(instance_topology.cells, cfg.cpu.numa.cells)"},{"line_number":3897,"context_line":"            ):"},{"line_number":3898,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3899,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_c7d98f83","line":3896,"range":{"start_line":3896,"start_character":16,"end_line":3896,"end_character":20},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3893,"context_line":"                cfg.cputune.emulatorpin.cpuset)"},{"line_number":3894,"context_line":""},{"line_number":3895,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate("},{"line_number":3896,"context_line":"                    zip(instance_topology.cells, cfg.cpu.numa.cells)"},{"line_number":3897,"context_line":"            ):"},{"line_number":3898,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3899,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_02b6c48a","line":3896,"range":{"start_line":3896,"start_character":16,"end_line":3896,"end_character":20},"in_reply_to":"bf51134e_c7d98f83","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3907,"context_line":"            self.assertEqual(\"strict\", cfg.numatune.memory.mode)"},{"line_number":3908,"context_line":""},{"line_number":3909,"context_line":"            for i, (instance_cell, memnode) in enumerate("},{"line_number":3910,"context_line":"                    zip(instance_topology.cells, cfg.numatune.memnodes)"},{"line_number":3911,"context_line":"            ):"},{"line_number":3912,"context_line":"                self.assertEqual(i, memnode.cellid)"},{"line_number":3913,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_a73d7b8f","line":3910,"range":{"start_line":3910,"start_character":16,"end_line":3910,"end_character":20},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3907,"context_line":"            self.assertEqual(\"strict\", cfg.numatune.memory.mode)"},{"line_number":3908,"context_line":""},{"line_number":3909,"context_line":"            for i, (instance_cell, memnode) in enumerate("},{"line_number":3910,"context_line":"                    zip(instance_topology.cells, cfg.numatune.memnodes)"},{"line_number":3911,"context_line":"            ):"},{"line_number":3912,"context_line":"                self.assertEqual(i, memnode.cellid)"},{"line_number":3913,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_22ae682d","line":3910,"range":{"start_line":3910,"start_character":16,"end_line":3910,"end_character":20},"in_reply_to":"bf51134e_a73d7b8f","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3921,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3922,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":3923,"context_line":"        instance_topology \u003d objects.InstanceNUMATopology("},{"line_number":3924,"context_line":"            emulator_threads_policy\u003d(fields.CPUEmulatorThreadsPolicy.ISOLATE),"},{"line_number":3925,"context_line":"            cells\u003d[objects.InstanceNUMACell("},{"line_number":3926,"context_line":"                id\u003d0, cpuset\u003dset([0, 1]), pcpuset\u003dset([2]), memory\u003d1024,"},{"line_number":3927,"context_line":"                cpu_pinning\u003d{2: 6},"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_c747cf1c","line":3924,"range":{"start_line":3924,"start_character":36,"end_line":3924,"end_character":37},"updated":"2020-07-14 09:32:01.000000000","message":"nit: not necessary","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3921,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":3922,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":3923,"context_line":"        instance_topology \u003d objects.InstanceNUMATopology("},{"line_number":3924,"context_line":"            emulator_threads_policy\u003d(fields.CPUEmulatorThreadsPolicy.ISOLATE),"},{"line_number":3925,"context_line":"            cells\u003d[objects.InstanceNUMACell("},{"line_number":3926,"context_line":"                id\u003d0, cpuset\u003dset([0, 1]), pcpuset\u003dset([2]), memory\u003d1024,"},{"line_number":3927,"context_line":"                cpu_pinning\u003d{2: 6},"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_e528fa33","line":3924,"range":{"start_line":3924,"start_character":36,"end_line":3924,"end_character":37},"in_reply_to":"bf51134e_c747cf1c","updated":"2020-07-14 16:36:07.000000000","message":"removed","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3947,"context_line":"                                            image_meta)"},{"line_number":3948,"context_line":""},{"line_number":3949,"context_line":"        with test.nested("},{"line_number":3950,"context_line":"                mock.patch.object("},{"line_number":3951,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3952,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3953,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_27516bda","line":3950,"range":{"start_line":3950,"start_character":12,"end_line":3950,"end_character":16},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3947,"context_line":"                                            image_meta)"},{"line_number":3948,"context_line":""},{"line_number":3949,"context_line":"        with test.nested("},{"line_number":3950,"context_line":"                mock.patch.object("},{"line_number":3951,"context_line":"                    objects.InstanceNUMATopology, \"get_by_instance_uuid\","},{"line_number":3952,"context_line":"                    return_value\u003dinstance_topology),"},{"line_number":3953,"context_line":"                mock.patch.object(host.Host, \u0027has_min_version\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_251e720b","line":3950,"range":{"start_line":3950,"start_character":12,"end_line":3950,"end_character":16},"in_reply_to":"bf51134e_27516bda","updated":"2020-07-14 16:36:07.000000000","message":"dedented.","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3962,"context_line":"            self.assertIsNone(cfg.cpuset)"},{"line_number":3963,"context_line":"            # Ensure the pinning is correct and limited to pinned vCPUs only."},{"line_number":3964,"context_line":"            self.assertEqual(0, cfg.cputune.vcpupin[0].id)"},{"line_number":3965,"context_line":"            self.assertEqual(set([2, 3, 4, 5]), cfg.cputune.vcpupin[0].cpuset)"},{"line_number":3966,"context_line":"            self.assertEqual(1, cfg.cputune.vcpupin[1].id)"},{"line_number":3967,"context_line":"            self.assertEqual(set([2, 3, 4, 5]), cfg.cputune.vcpupin[1].cpuset)"},{"line_number":3968,"context_line":"            self.assertEqual(2, cfg.cputune.vcpupin[2].id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_47657fb4","line":3965,"range":{"start_line":3965,"start_character":33,"end_line":3965,"end_character":45},"updated":"2020-07-14 09:32:01.000000000","message":"some notes on where this is coming from would be helpful to other reviewers (fwict, it\u0027s of the combination of the \u0027[compute] cpu_shared_set\u0027 value and the host NUMATopology instance you\u0027ve defined, meaning these are the only host cores from NUMA node 0 that are usable)","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3962,"context_line":"            self.assertIsNone(cfg.cpuset)"},{"line_number":3963,"context_line":"            # Ensure the pinning is correct and limited to pinned vCPUs only."},{"line_number":3964,"context_line":"            self.assertEqual(0, cfg.cputune.vcpupin[0].id)"},{"line_number":3965,"context_line":"            self.assertEqual(set([2, 3, 4, 5]), cfg.cputune.vcpupin[0].cpuset)"},{"line_number":3966,"context_line":"            self.assertEqual(1, cfg.cputune.vcpupin[1].id)"},{"line_number":3967,"context_line":"            self.assertEqual(set([2, 3, 4, 5]), cfg.cputune.vcpupin[1].cpuset)"},{"line_number":3968,"context_line":"            self.assertEqual(2, cfg.cputune.vcpupin[2].id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_e5847a0d","line":3965,"range":{"start_line":3965,"start_character":33,"end_line":3965,"end_character":45},"in_reply_to":"bf51134e_47657fb4","updated":"2020-07-14 16:36:07.000000000","message":"Got idea. What these test cases are ensuring is not easy to get at first glance, notes will increase readability.","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":3976,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"},{"line_number":3977,"context_line":""},{"line_number":3978,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate("},{"line_number":3979,"context_line":"                    zip(instance_topology.cells, cfg.cpu.numa.cells)"},{"line_number":3980,"context_line":"            ):"},{"line_number":3981,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3982,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_a7561bcd","line":3979,"range":{"start_line":3979,"start_character":16,"end_line":3979,"end_character":20},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":3976,"context_line":"            self.assertEqual(set([7]), cfg.cputune.emulatorpin.cpuset)"},{"line_number":3977,"context_line":""},{"line_number":3978,"context_line":"            for i, (instance_cell, numa_cfg_cell) in enumerate("},{"line_number":3979,"context_line":"                    zip(instance_topology.cells, cfg.cpu.numa.cells)"},{"line_number":3980,"context_line":"            ):"},{"line_number":3981,"context_line":"                self.assertEqual(i, numa_cfg_cell.id)"},{"line_number":3982,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_85193e23","line":3979,"range":{"start_line":3979,"start_character":16,"end_line":3979,"end_character":20},"in_reply_to":"bf51134e_a7561bcd","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4000,"context_line":"        created through \u0027hw:cpu_realtime_mask\u0027 and \u0027hw:cpu_realtime\u0027 extra"},{"line_number":4001,"context_line":"        specs, verifying the NUMA topology and real-time realted settings."},{"line_number":4002,"context_line":"        \"\"\""},{"line_number":4003,"context_line":"        \"\"\" Test NUMA topology related guest libvirt configuration for a"},{"line_number":4004,"context_line":"        mixed policy instance creating from \u0027hw:cpu_realtime\u0027 extra spec."},{"line_number":4005,"context_line":"        \"\"\""},{"line_number":4006,"context_line":"        self.flags(cpu_shared_set\u003d\u00272-5,8-29\u0027,"},{"line_number":4007,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":4008,"context_line":"                   group\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_4d8116c3","line":4005,"range":{"start_line":4003,"start_character":0,"end_line":4005,"end_character":11},"updated":"2020-07-14 09:32:01.000000000","message":"one of these docstrings is unnecessary, I suspect?","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4000,"context_line":"        created through \u0027hw:cpu_realtime_mask\u0027 and \u0027hw:cpu_realtime\u0027 extra"},{"line_number":4001,"context_line":"        specs, verifying the NUMA topology and real-time realted settings."},{"line_number":4002,"context_line":"        \"\"\""},{"line_number":4003,"context_line":"        \"\"\" Test NUMA topology related guest libvirt configuration for a"},{"line_number":4004,"context_line":"        mixed policy instance creating from \u0027hw:cpu_realtime\u0027 extra spec."},{"line_number":4005,"context_line":"        \"\"\""},{"line_number":4006,"context_line":"        self.flags(cpu_shared_set\u003d\u00272-5,8-29\u0027,"},{"line_number":4007,"context_line":"                   cpu_dedicated_set\u003d\u00276,7,30,31\u0027,"},{"line_number":4008,"context_line":"                   group\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_0239a4f0","line":4005,"range":{"start_line":4003,"start_character":0,"end_line":4005,"end_character":11},"in_reply_to":"bf51134e_4d8116c3","updated":"2020-07-14 16:36:07.000000000","message":"Yes, it shoud be removed.","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4026,"context_line":"                                    \"hw:numa_nodes\": \"2\","},{"line_number":4027,"context_line":"                                    \"hw:cpu_realtime\": \"yes\","},{"line_number":4028,"context_line":"                                    \"hw:cpu_policy\": \"dedicated\","},{"line_number":4029,"context_line":"                                    \"hw:cpu_realtime_mask\": \"^0-3\""},{"line_number":4030,"context_line":"                                })"},{"line_number":4031,"context_line":"        instance_ref.flavor \u003d flavor"},{"line_number":4032,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_0d643e49","line":4029,"range":{"start_line":4029,"start_character":36,"end_line":4029,"end_character":66},"updated":"2020-07-14 09:32:01.000000000","message":"This seems wrong. You\u0027re saying cores 4 and 5 should be real-time (there are 6 cores and everything *except* cores 0, 1, 2 and 3 should be real-time) yet the instance_topology above suggests cores 0, 1, 4 and 5 are dedicated (and therefore real-time).\n\nI\u0027m going to guess that what\u0027s specified in the extra specs doesn\u0027t actually matter here, i.e. it\u0027s not parsed? If so, it might make sense to either leave it empty, with a note stating that it would normally be configured. If you want to provide it, I guess this needs to corrected?","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4026,"context_line":"                                    \"hw:numa_nodes\": \"2\","},{"line_number":4027,"context_line":"                                    \"hw:cpu_realtime\": \"yes\","},{"line_number":4028,"context_line":"                                    \"hw:cpu_policy\": \"dedicated\","},{"line_number":4029,"context_line":"                                    \"hw:cpu_realtime_mask\": \"^0-3\""},{"line_number":4030,"context_line":"                                })"},{"line_number":4031,"context_line":"        instance_ref.flavor \u003d flavor"},{"line_number":4032,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_fc67f623","line":4029,"range":{"start_line":4029,"start_character":36,"end_line":4029,"end_character":66},"in_reply_to":"bf51134e_0d643e49","updated":"2020-07-14 16:36:07.000000000","message":"Here seems at least two errors have been made. The \u0027hw:cpu_policy\u0027 should be \u0027mixed\u0027, and the \u0027hw:cpu_realtime_mask\" should be equal to the joint pcpuset of all instance numa cells.\n\nThese extra specs are fully verified in API layer but not here, I think this is the reason why error not detected in this test case.\n\nI\u0027ll correct the errors and give a note here.","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4054,"context_line":"                              return_value\u003dcaps),"},{"line_number":4055,"context_line":"            mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":4056,"context_line":"                              return_value\u003dset(range(32))),"},{"line_number":4057,"context_line":"            ):"},{"line_number":4058,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":4059,"context_line":"                                         image_meta, disk_info)"},{"line_number":4060,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_4de8f67a","line":4057,"range":{"start_line":4057,"start_character":8,"end_line":4057,"end_character":12},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4054,"context_line":"                              return_value\u003dcaps),"},{"line_number":4055,"context_line":"            mock.patch.object(host.Host, \u0027get_online_cpus\u0027,"},{"line_number":4056,"context_line":"                              return_value\u003dset(range(32))),"},{"line_number":4057,"context_line":"            ):"},{"line_number":4058,"context_line":"            cfg \u003d drvr._get_guest_config(instance_ref, [],"},{"line_number":4059,"context_line":"                                         image_meta, disk_info)"},{"line_number":4060,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_02124462","line":4057,"range":{"start_line":4057,"start_character":8,"end_line":4057,"end_character":12},"in_reply_to":"bf51134e_4de8f67a","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4059,"context_line":"                                         image_meta, disk_info)"},{"line_number":4060,"context_line":""},{"line_number":4061,"context_line":"            for instance_cell, numa_cfg_cell, index in zip("},{"line_number":4062,"context_line":"                    instance_topology.cells,"},{"line_number":4063,"context_line":"                    cfg.cpu.numa.cells,"},{"line_number":4064,"context_line":"                    range(len(instance_topology.cells))):"},{"line_number":4065,"context_line":"                self.assertEqual(index, numa_cfg_cell.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_8d05ee48","line":4062,"range":{"start_line":4062,"start_character":16,"end_line":4062,"end_character":20},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4059,"context_line":"                                         image_meta, disk_info)"},{"line_number":4060,"context_line":""},{"line_number":4061,"context_line":"            for instance_cell, numa_cfg_cell, index in zip("},{"line_number":4062,"context_line":"                    instance_topology.cells,"},{"line_number":4063,"context_line":"                    cfg.cpu.numa.cells,"},{"line_number":4064,"context_line":"                    range(len(instance_topology.cells))):"},{"line_number":4065,"context_line":"                self.assertEqual(index, numa_cfg_cell.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_e214704f","line":4062,"range":{"start_line":4062,"start_character":16,"end_line":4062,"end_character":20},"in_reply_to":"bf51134e_8d05ee48","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4061,"context_line":"            for instance_cell, numa_cfg_cell, index in zip("},{"line_number":4062,"context_line":"                    instance_topology.cells,"},{"line_number":4063,"context_line":"                    cfg.cpu.numa.cells,"},{"line_number":4064,"context_line":"                    range(len(instance_topology.cells))):"},{"line_number":4065,"context_line":"                self.assertEqual(index, numa_cfg_cell.id)"},{"line_number":4066,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"},{"line_number":4067,"context_line":"                                 numa_cfg_cell.cpus)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_6d005a35","line":4064,"range":{"start_line":4064,"start_character":55,"end_line":4064,"end_character":57},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4061,"context_line":"            for instance_cell, numa_cfg_cell, index in zip("},{"line_number":4062,"context_line":"                    instance_topology.cells,"},{"line_number":4063,"context_line":"                    cfg.cpu.numa.cells,"},{"line_number":4064,"context_line":"                    range(len(instance_topology.cells))):"},{"line_number":4065,"context_line":"                self.assertEqual(index, numa_cfg_cell.id)"},{"line_number":4066,"context_line":"                self.assertEqual(instance_cell.cpuset | instance_cell.pcpuset,"},{"line_number":4067,"context_line":"                                 numa_cfg_cell.cpus)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_420f1c36","line":4064,"range":{"start_line":4064,"start_character":55,"end_line":4064,"end_character":57},"in_reply_to":"bf51134e_6d005a35","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4074,"context_line":"            self.assertEqual(\"strict\", cfg.numatune.memory.mode)"},{"line_number":4075,"context_line":""},{"line_number":4076,"context_line":"            for instance_cell, memnode, index in zip("},{"line_number":4077,"context_line":"                    instance_topology.cells,"},{"line_number":4078,"context_line":"                    cfg.numatune.memnodes,"},{"line_number":4079,"context_line":"                    range(len(instance_topology.cells))):"},{"line_number":4080,"context_line":"                self.assertEqual(index, memnode.cellid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_4d9d9608","line":4077,"range":{"start_line":4077,"start_character":16,"end_line":4077,"end_character":20},"updated":"2020-07-14 09:32:01.000000000","message":"nit","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4074,"context_line":"            self.assertEqual(\"strict\", cfg.numatune.memory.mode)"},{"line_number":4075,"context_line":""},{"line_number":4076,"context_line":"            for instance_cell, memnode, index in zip("},{"line_number":4077,"context_line":"                    instance_topology.cells,"},{"line_number":4078,"context_line":"                    cfg.numatune.memnodes,"},{"line_number":4079,"context_line":"                    range(len(instance_topology.cells))):"},{"line_number":4080,"context_line":"                self.assertEqual(index, memnode.cellid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_8205b416","line":4077,"range":{"start_line":4077,"start_character":16,"end_line":4077,"end_character":20},"in_reply_to":"bf51134e_4d9d9608","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4081,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"},{"line_number":4082,"context_line":"                self.assertEqual(\"strict\", memnode.mode)"},{"line_number":4083,"context_line":""},{"line_number":4084,"context_line":"            self.assertEqual(1, len(cfg.cputune.vcpusched))"},{"line_number":4085,"context_line":"            self.assertEqual(\"fifo\", cfg.cputune.vcpusched[0].scheduler)"},{"line_number":4086,"context_line":""},{"line_number":4087,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[0].cpuset)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_cd9086f0","line":4084,"updated":"2020-07-14 09:32:01.000000000","message":"some notes on the significance of these would be helpful","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"dd02334a49b5b9b231462e68cbee864730f285ae","unresolved":false,"context_lines":[{"line_number":4081,"context_line":"                self.assertEqual([instance_cell.id], memnode.nodeset)"},{"line_number":4082,"context_line":"                self.assertEqual(\"strict\", memnode.mode)"},{"line_number":4083,"context_line":""},{"line_number":4084,"context_line":"            self.assertEqual(1, len(cfg.cputune.vcpusched))"},{"line_number":4085,"context_line":"            self.assertEqual(\"fifo\", cfg.cputune.vcpusched[0].scheduler)"},{"line_number":4086,"context_line":""},{"line_number":4087,"context_line":"            self.assertEqual(set([6]), cfg.cputune.vcpupin[0].cpuset)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_c5d4d622","line":4084,"in_reply_to":"bf51134e_cd9086f0","updated":"2020-07-14 16:36:07.000000000","message":"Done","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"                    cell_pairs.append((guest_config_cell, host_cell))"},{"line_number":4972,"context_line":"        return cell_pairs"},{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"    def _get_pin_cpuset(self, vcpu, object_numa_cell, host_cell):"},{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4977,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_7e683e86","line":4974,"range":{"start_line":4974,"start_character":36,"end_line":4974,"end_character":52},"updated":"2020-06-22 12:29:02.000000000","message":"Consider renaming this to \u0027instance_cell\u0027. It\u0027s clearer and it will make the below wrapping unnecessary. Type hints would be awesome (though not essential) too","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"                    cell_pairs.append((guest_config_cell, host_cell))"},{"line_number":4972,"context_line":"        return cell_pairs"},{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"    def _get_pin_cpuset(self, vcpu, object_numa_cell, host_cell):"},{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4977,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_780aab1f","line":4974,"range":{"start_line":4974,"start_character":36,"end_line":4974,"end_character":52},"in_reply_to":"bf51134e_7e683e86","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"    def _get_pin_cpuset(self, vcpu, object_numa_cell, host_cell):"},{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4977,"context_line":""},{"line_number":4978,"context_line":"            a) If there is pinning information in the cell, we pin vcpus to"},{"line_number":4979,"context_line":"               individual CPUs"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_be349694","line":4976,"updated":"2020-06-22 12:29:02.000000000","message":"nit: not you, but can you add a newline above this?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"    def _get_pin_cpuset(self, vcpu, object_numa_cell, host_cell):"},{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4977,"context_line":""},{"line_number":4978,"context_line":"            a) If there is pinning information in the cell, we pin vcpus to"},{"line_number":4979,"context_line":"               individual CPUs"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_6d15cf48","line":4976,"in_reply_to":"bf51134e_be349694","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4977,"context_line":""},{"line_number":4978,"context_line":"            a) If there is pinning information in the cell, we pin vcpus to"},{"line_number":4979,"context_line":"               individual CPUs"},{"line_number":4980,"context_line":"            b) Otherwise we float over the whole host NUMA node"},{"line_number":4981,"context_line":"        \"\"\""},{"line_number":4982,"context_line":"        pin_cpuset \u003d vconfig.LibvirtConfigGuestCPUTuneVCPUPin()"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_de2fca3c","line":4979,"range":{"start_line":4978,"start_character":15,"end_line":4979,"end_character":30},"updated":"2020-06-22 12:29:02.000000000","message":"If the specified instance vCPU is intended to be pinned, we pin it to the previously selected host CPU.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4977,"context_line":""},{"line_number":4978,"context_line":"            a) If there is pinning information in the cell, we pin vcpus to"},{"line_number":4979,"context_line":"               individual CPUs"},{"line_number":4980,"context_line":"            b) Otherwise we float over the whole host NUMA node"},{"line_number":4981,"context_line":"        \"\"\""},{"line_number":4982,"context_line":"        pin_cpuset \u003d vconfig.LibvirtConfigGuestCPUTuneVCPUPin()"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_8d12e360","line":4979,"range":{"start_line":4978,"start_character":15,"end_line":4979,"end_character":30},"in_reply_to":"bf51134e_de2fca3c","updated":"2020-06-29 11:43:03.000000000","message":"Done","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dae4baed72e3213bafb75d831fe3dccde9d4d40c","unresolved":false,"context_lines":[{"line_number":4982,"context_line":"        pin_cpuset \u003d vconfig.LibvirtConfigGuestCPUTuneVCPUPin()"},{"line_number":4983,"context_line":"        pin_cpuset.id \u003d vcpu"},{"line_number":4984,"context_line":""},{"line_number":4985,"context_line":"        if (object_numa_cell.cpu_pinning and"},{"line_number":4986,"context_line":"                vcpu in object_numa_cell.cpu_pinning):"},{"line_number":4987,"context_line":"            pin_cpuset.cpuset \u003d set([object_numa_cell.cpu_pinning[vcpu]])"},{"line_number":4988,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_be6656c0","line":4985,"updated":"2020-06-22 12:29:02.000000000","message":"Can you add a comment stating why we\u0027re doing this check?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"ade90a1d5a46b0adb633047cfb2e16e43e81b8b9","unresolved":false,"context_lines":[{"line_number":4982,"context_line":"        pin_cpuset \u003d vconfig.LibvirtConfigGuestCPUTuneVCPUPin()"},{"line_number":4983,"context_line":"        pin_cpuset.id \u003d vcpu"},{"line_number":4984,"context_line":""},{"line_number":4985,"context_line":"        if (object_numa_cell.cpu_pinning and"},{"line_number":4986,"context_line":"                vcpu in object_numa_cell.cpu_pinning):"},{"line_number":4987,"context_line":"            pin_cpuset.cpuset \u003d set([object_numa_cell.cpu_pinning[vcpu]])"},{"line_number":4988,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_db1100af","line":4985,"updated":"2020-07-02 08:11:23.000000000","message":"Done.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"028fc5313ae934c68c716d60da791c3c34819ebc","unresolved":false,"context_lines":[{"line_number":4982,"context_line":"        pin_cpuset \u003d vconfig.LibvirtConfigGuestCPUTuneVCPUPin()"},{"line_number":4983,"context_line":"        pin_cpuset.id \u003d vcpu"},{"line_number":4984,"context_line":""},{"line_number":4985,"context_line":"        if (object_numa_cell.cpu_pinning and"},{"line_number":4986,"context_line":"                vcpu in object_numa_cell.cpu_pinning):"},{"line_number":4987,"context_line":"            pin_cpuset.cpuset \u003d set([object_numa_cell.cpu_pinning[vcpu]])"},{"line_number":4988,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_78ebcb76","line":4985,"in_reply_to":"bf51134e_b847231d","updated":"2020-06-29 12:21:15.000000000","message":"Perfect. Can you add this as a comment to the code?","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95f94fa1b807754143f48579e3c003ab14f3e328","unresolved":false,"context_lines":[{"line_number":4982,"context_line":"        pin_cpuset \u003d vconfig.LibvirtConfigGuestCPUTuneVCPUPin()"},{"line_number":4983,"context_line":"        pin_cpuset.id \u003d vcpu"},{"line_number":4984,"context_line":""},{"line_number":4985,"context_line":"        if (object_numa_cell.cpu_pinning and"},{"line_number":4986,"context_line":"                vcpu in object_numa_cell.cpu_pinning):"},{"line_number":4987,"context_line":"            pin_cpuset.cpuset \u003d set([object_numa_cell.cpu_pinning[vcpu]])"},{"line_number":4988,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_b847231d","line":4985,"in_reply_to":"bf51134e_be6656c0","updated":"2020-06-29 11:43:03.000000000","message":"\u0027InstanceNUMACell.cpu_pinning\u0027 tracks the CPU pinning pair for guest CPU and host CPU. If the guest CPU is in the keys of \u0027cpu_pinning\u0027, fetch the host CPU from it and pin on it, otherwise, let the guest CPU be floating on the sharing CPU set of this instance NUMA cell.","commit_id":"f62e55a139ef62ee51200fab229f70ae3d1f0352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"                    cell_pairs.append((guest_config_cell, host_cell))"},{"line_number":4972,"context_line":"        return cell_pairs"},{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"    def _get_pin_cpuset(self, vcpu, inst_cell, host_cell):"},{"line_number":4975,"context_line":"        \"\"\"Returns the config object of LibvirtConfigGuestCPUTuneVCPUPin."},{"line_number":4976,"context_line":""},{"line_number":4977,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_8db32e98","line":4974,"updated":"2020-07-14 09:32:01.000000000","message":"type hints would great (though optional, of course)","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d54dcd246ec26ccaf2f014fa668c2638381d054b","unresolved":false,"context_lines":[{"line_number":4976,"context_line":""},{"line_number":4977,"context_line":"        Prepares vcpupin config for the guest with the following caveats:"},{"line_number":4978,"context_line":""},{"line_number":4979,"context_line":"            a) If the specified instance vCPU is intended to be pinned, we pin"},{"line_number":4980,"context_line":"               it to the previously selected host CPU."},{"line_number":4981,"context_line":"            b) Otherwise we float over the whole host NUMA node"},{"line_number":4982,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_0dc0bee0","line":4979,"range":{"start_line":4979,"start_character":8,"end_line":4979,"end_character":12},"updated":"2020-07-14 09:32:01.000000000","message":"If you\u0027re making changes to this patch, can you remove this indent since it won\u0027t render correctly","commit_id":"6813a7503d30b4ca704a6090fc76af4f1691eb6d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9efe62583f65e36bbbaa7ca9f9075f5f64b6ddfd","unresolved":false,"context_lines":[{"line_number":4990,"context_line":"        if inst_cell.cpu_pinning and vcpu in inst_cell.cpu_pinning:"},{"line_number":4991,"context_line":"            pin_cpuset.cpuset \u003d set([inst_cell.cpu_pinning[vcpu]])"},{"line_number":4992,"context_line":"        else:"},{"line_number":4993,"context_line":"            pin_cpuset.cpuset \u003d host_cell.cpuset"},{"line_number":4994,"context_line":""},{"line_number":4995,"context_line":"        return pin_cpuset"},{"line_number":4996,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_edc864a9","line":4993,"range":{"start_line":4993,"start_character":0,"end_line":4993,"end_character":48},"updated":"2020-10-02 17:10:29.000000000","message":"This can be empty. We don\u0027t seem to be doing per-NUMA checks. See [1].\n\n[1] https://bugs.launchpad.net/nova/+bug/1898272","commit_id":"6aa1931e8deff6ba16e017df3fcfe685f383bbbf"}]}
