)]}'
{"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3865,"context_line":"        self.assertEqual(set([3]), new_cell.cells[0].pinned_cpus)"},{"line_number":3866,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"    def test_host_usage_from_mixed_instance(self):"},{"line_number":3869,"context_line":"        host_pin \u003d objects.NUMATopology(cells\u003d["},{"line_number":3870,"context_line":"            objects.NUMACell("},{"line_number":3871,"context_line":"                id\u003d0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_798cd87e","line":3868,"updated":"2020-06-22 13:19:59.000000000","message":"Can we get a docstring explaining intent?","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3865,"context_line":"        self.assertEqual(set([3]), new_cell.cells[0].pinned_cpus)"},{"line_number":3866,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"    def test_host_usage_from_mixed_instance(self):"},{"line_number":3869,"context_line":"        host_pin \u003d objects.NUMATopology(cells\u003d["},{"line_number":3870,"context_line":"            objects.NUMACell("},{"line_number":3871,"context_line":"                id\u003d0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_184e0fc0","line":3868,"updated":"2020-06-29 12:19:49.000000000","message":"Sure, Done.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3866,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"    def test_host_usage_from_mixed_instance(self):"},{"line_number":3869,"context_line":"        host_pin \u003d objects.NUMATopology(cells\u003d["},{"line_number":3870,"context_line":"            objects.NUMACell("},{"line_number":3871,"context_line":"                id\u003d0,"},{"line_number":3872,"context_line":"                cpuset\u003dset([0, 1, 2, 3]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_f8487bb3","line":3869,"updated":"2020-06-29 12:19:49.000000000","message":"Just copy and paste from somewhere of this file, one example is in #L3843. Looks the naming for this name is inconsistent in this py file, a lot of places used the \u0027host_topo\u0027 and some other places used \u0027topo_pin\u0027.\n\nHow about unifying this object\u0027s name in a separate reformating patch.\n\nAnd I stand for \u0027host_topo\u0027 and \u0027inst_topo\u0027 as the unifying name.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3866,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"    def test_host_usage_from_mixed_instance(self):"},{"line_number":3869,"context_line":"        host_pin \u003d objects.NUMATopology(cells\u003d["},{"line_number":3870,"context_line":"            objects.NUMACell("},{"line_number":3871,"context_line":"                id\u003d0,"},{"line_number":3872,"context_line":"                cpuset\u003dset([0, 1, 2, 3]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_d906c4ce","line":3869,"range":{"start_line":3869,"start_character":8,"end_line":3869,"end_character":16},"updated":"2020-06-22 13:19:59.000000000","message":"host_topo ?","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07541e88b74605dbf73a405b7d121f395d98fcdc","unresolved":false,"context_lines":[{"line_number":3866,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":3867,"context_line":""},{"line_number":3868,"context_line":"    def test_host_usage_from_mixed_instance(self):"},{"line_number":3869,"context_line":"        host_pin \u003d objects.NUMATopology(cells\u003d["},{"line_number":3870,"context_line":"            objects.NUMACell("},{"line_number":3871,"context_line":"                id\u003d0,"},{"line_number":3872,"context_line":"                cpuset\u003dset([0, 1, 2, 3]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_b30f442c","line":3869,"in_reply_to":"bf51134e_f8487bb3","updated":"2020-06-29 12:37:45.000000000","message":"It\u0027s okay if things are a bit different between functions so I wouldn\u0027t spend a lot of time on refactoring patches (at least, not until the functional changes merge). We should use the better name in new code","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3875,"context_line":"                cpu_usage\u003d0,"},{"line_number":3876,"context_line":"                memory_usage\u003d0,"},{"line_number":3877,"context_line":"                pinned_cpus\u003dset([5]),"},{"line_number":3878,"context_line":"                siblings\u003d[set([0, 2]), set([1, 3]),"},{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_79b3384e","line":3879,"range":{"start_line":3878,"start_character":26,"end_line":3879,"end_character":50},"updated":"2020-06-22 13:19:59.000000000","message":"Not critical, but this isn\u0027t very realistic. All of the first thread siblings are usually listed first, so 0,4; 1,5; ...\n\nAlso, this could fit on one line","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3876,"context_line":"                memory_usage\u003d0,"},{"line_number":3877,"context_line":"                pinned_cpus\u003dset([5]),"},{"line_number":3878,"context_line":"                siblings\u003d[set([0, 2]), set([1, 3]),"},{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_58c9a723","line":3879,"updated":"2020-06-29 12:19:49.000000000","message":"Yes. The CPU sibling layout presenting by you is more realistic.\n\nChanged and fixed in one line.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3877,"context_line":"                pinned_cpus\u003dset([5]),"},{"line_number":3878,"context_line":"                siblings\u003d[set([0, 2]), set([1, 3]),"},{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("},{"line_number":3883,"context_line":"                cells\u003d[objects.InstanceNUMACell("},{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_b9a150fb","line":3881,"range":{"start_line":3880,"start_character":26,"end_line":3881,"end_character":52},"updated":"2020-06-22 13:19:59.000000000","message":"Could you omit this? It\u0027s not relevant, right?","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3878,"context_line":"                siblings\u003d[set([0, 2]), set([1, 3]),"},{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("},{"line_number":3883,"context_line":"                cells\u003d[objects.InstanceNUMACell("},{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_38ccb333","line":3881,"updated":"2020-06-29 12:19:49.000000000","message":"It is unrelevant, removed.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"7c733dbbcac2d4ec0dd991526e74b47a0437a34e","unresolved":false,"context_lines":[{"line_number":3878,"context_line":"                siblings\u003d[set([0, 2]), set([1, 3]),"},{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("},{"line_number":3883,"context_line":"                cells\u003d[objects.InstanceNUMACell("},{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_9b1788a4","line":3881,"updated":"2020-07-02 08:11:04.000000000","message":"[Later]: \n\n\u003e Could you omit this? It\u0027s not relevant, right?\n\nThis is required and cannot be omitted. By checking the code, listing as below, in this test, \u0027_numa_pagesize_usage_from_cell\u0027 is called, if there is no \u0027pagesize\u0027 is defined in \u0027InstanceNUMACell\u0027, then it will call \u0027_get_smallest_pagesize\u0027 for it, the later function thinks \u0027host_cell.mempages\u0027 should be be empty. (my conclusion is from \u0027return avail_pagesize[0]\u0027).\n\nI have to provide one NUMAPagesTopology object for \u0027host_cell.mempages\u0027.\n\n\n  def _get_smallest_pagesize(host_cell):\n     \"\"\"Returns the smallest available page size based on hostcell\"\"\"\n     avail_pagesize \u003d [page.size_kb for page in host_cell.mempages]\n     avail_pagesize.sort()\n     return avail_pagesize[0]\n\n\n def _numa_pagesize_usage_from_cell(host_cell, instance_cell, sign):\n     if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:\n         pagesize \u003d instance_cell.pagesize\n     else:\n         pagesize \u003d _geot_smallest_pagesize(host_cell)\n   ....\u003cOther code\u003e...","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("},{"line_number":3883,"context_line":"                cells\u003d[objects.InstanceNUMACell("},{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"},{"line_number":3885,"context_line":"                    id\u003d0, cpu_pinning\u003d{2: 4, 3: 6},"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_98cfbf27","line":3882,"updated":"2020-06-29 12:19:49.000000000","message":"Yes, inst_topo is better.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3879,"context_line":"                          set([4, 6]), set([5, 7])],"},{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("},{"line_number":3883,"context_line":"                cells\u003d[objects.InstanceNUMACell("},{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"},{"line_number":3885,"context_line":"                    id\u003d0, cpu_pinning\u003d{2: 4, 3: 6},"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_b90b10d4","line":3882,"range":{"start_line":3882,"start_character":8,"end_line":3882,"end_character":16},"updated":"2020-06-22 13:19:59.000000000","message":"inst_topo ?","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"},{"line_number":3885,"context_line":"                    id\u003d0, cpu_pinning\u003d{2: 4, 3: 6},"},{"line_number":3886,"context_line":"                    cpu_policy\u003dfields.CPUAllocationPolicy.MIXED,"},{"line_number":3887,"context_line":"                 )])"},{"line_number":3888,"context_line":""},{"line_number":3889,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_pin, inst_pin)"},{"line_number":3890,"context_line":"        self.assertEqual(set([4, 5, 6]), new_cell.cells[0].pinned_cpus)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_78d2abd2","line":3887,"updated":"2020-06-29 12:19:49.000000000","message":"Sure. And will make the same dedentation for code blocks found below.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3880,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":3881,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)])])"},{"line_number":3882,"context_line":"        inst_pin \u003d objects.InstanceNUMATopology("},{"line_number":3883,"context_line":"                cells\u003d[objects.InstanceNUMACell("},{"line_number":3884,"context_line":"                    cpuset\u003dset([0, 1]), pcpuset\u003dset([2, 3]), memory\u003d2048,"},{"line_number":3885,"context_line":"                    id\u003d0, cpu_pinning\u003d{2: 4, 3: 6},"},{"line_number":3886,"context_line":"                    cpu_policy\u003dfields.CPUAllocationPolicy.MIXED,"},{"line_number":3887,"context_line":"                 )])"},{"line_number":3888,"context_line":""},{"line_number":3889,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_pin, inst_pin)"},{"line_number":3890,"context_line":"        self.assertEqual(set([4, 5, 6]), new_cell.cells[0].pinned_cpus)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_f980e848","line":3887,"range":{"start_line":3883,"start_character":0,"end_line":3887,"end_character":20},"updated":"2020-06-22 13:19:59.000000000","message":"nit: dedent\n\n(below too)","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":3887,"context_line":"                 )])"},{"line_number":3888,"context_line":""},{"line_number":3889,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_pin, inst_pin)"},{"line_number":3890,"context_line":"        self.assertEqual(set([4, 5, 6]), new_cell.cells[0].pinned_cpus)"},{"line_number":3891,"context_line":"        self.assertEqual(2, new_cell.cells[0].cpu_usage)"},{"line_number":3892,"context_line":""},{"line_number":3893,"context_line":"    def test_host_usage_from_mixed_instance_free(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_d8dc97e5","line":3890,"updated":"2020-06-29 12:19:49.000000000","message":"Done and for other tests.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":3887,"context_line":"                 )])"},{"line_number":3888,"context_line":""},{"line_number":3889,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_pin, inst_pin)"},{"line_number":3890,"context_line":"        self.assertEqual(set([4, 5, 6]), new_cell.cells[0].pinned_cpus)"},{"line_number":3891,"context_line":"        self.assertEqual(2, new_cell.cells[0].cpu_usage)"},{"line_number":3892,"context_line":""},{"line_number":3893,"context_line":"    def test_host_usage_from_mixed_instance_free(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_79fdf8af","line":3890,"range":{"start_line":3890,"start_character":25,"end_line":3890,"end_character":39},"updated":"2020-06-22 13:19:59.000000000","message":"here and elsewhere: you can also state this as\n\n  {4, 5, 6}","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8e62173923caec42c77750614c44fb9b782fe3","unresolved":false,"context_lines":[{"line_number":4154,"context_line":"                memory\u003d4096,"},{"line_number":4155,"context_line":"                cpu_usage\u003d2,"},{"line_number":4156,"context_line":"                memory_usage\u003d0,"},{"line_number":4157,"context_line":"                pinned_cpus\u003dset([0, 1, 4, 5]),"},{"line_number":4158,"context_line":"                siblings\u003d[set([0, 4]), set([1, 5]), set([2, 6]), set([3, 7])],"},{"line_number":4159,"context_line":"                mempages\u003d[objects.NUMAPagesTopology("},{"line_number":4160,"context_line":"                    size_kb\u003d4, total\u003d524288, used\u003d0)]"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_d06139d5","line":4157,"range":{"start_line":4157,"start_character":16,"end_line":4157,"end_character":46},"updated":"2020-07-14 10:01:23.000000000","message":"There are 4 pinned CPUs on the host","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8e62173923caec42c77750614c44fb9b782fe3","unresolved":false,"context_lines":[{"line_number":4162,"context_line":"        ])"},{"line_number":4163,"context_line":"        inst_topo \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":4164,"context_line":"            objects.InstanceNUMACell("},{"line_number":4165,"context_line":"                cpuset\u003dset([2, 3]), pcpuset\u003dset([0, 1]),"},{"line_number":4166,"context_line":"                memory\u003d2048, id\u003d0,"},{"line_number":4167,"context_line":"                cpu_pinning\u003d{0: 0, 1: 1},"},{"line_number":4168,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.MIXED,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_70ab0dd5","line":4165,"range":{"start_line":4165,"start_character":36,"end_line":4165,"end_character":56},"updated":"2020-07-14 10:01:23.000000000","message":"and two pinned CPUs in the guest","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"1f17148bf28f05c722bcc3c2316c92b51331d520","unresolved":false,"context_lines":[{"line_number":4163,"context_line":"        inst_topo \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":4164,"context_line":"            objects.InstanceNUMACell("},{"line_number":4165,"context_line":"                cpuset\u003dset([2, 3]), pcpuset\u003dset([0, 1]),"},{"line_number":4166,"context_line":"                memory\u003d2048, id\u003d0,"},{"line_number":4167,"context_line":"                cpu_pinning\u003d{0: 0, 1: 1},"},{"line_number":4168,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.MIXED,"},{"line_number":4169,"context_line":"                cpu_thread_policy\u003dfields.CPUThreadAllocationPolicy.ISOLATE"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_2f4da13a","line":4166,"updated":"2020-07-15 12:54:12.000000000","message":"Sure. We know the instance NUMA cell and host NUMA cell are matched through a same id.","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8e62173923caec42c77750614c44fb9b782fe3","unresolved":false,"context_lines":[{"line_number":4163,"context_line":"        inst_topo \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":4164,"context_line":"            objects.InstanceNUMACell("},{"line_number":4165,"context_line":"                cpuset\u003dset([2, 3]), pcpuset\u003dset([0, 1]),"},{"line_number":4166,"context_line":"                memory\u003d2048, id\u003d0,"},{"line_number":4167,"context_line":"                cpu_pinning\u003d{0: 0, 1: 1},"},{"line_number":4168,"context_line":"                cpu_policy\u003dfields.CPUAllocationPolicy.MIXED,"},{"line_number":4169,"context_line":"                cpu_thread_policy\u003dfields.CPUThreadAllocationPolicy.ISOLATE"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_90b06145","line":4166,"range":{"start_line":4166,"start_character":29,"end_line":4166,"end_character":34},"updated":"2020-07-14 10:01:23.000000000","message":"nit: could you place \u0027id\u0027 at the start? It doesn\u0027t matter, but it seems more obvious IMO","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8e62173923caec42c77750614c44fb9b782fe3","unresolved":false,"context_lines":[{"line_number":4172,"context_line":""},{"line_number":4173,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_topo, inst_topo,"},{"line_number":4174,"context_line":"                                                    free\u003dTrue)"},{"line_number":4175,"context_line":"        self.assertEqual(set(), new_cell.cells[0].pinned_cpus)"},{"line_number":4176,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":4177,"context_line":""},{"line_number":4178,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_f09f1db1","line":4175,"range":{"start_line":4175,"start_character":25,"end_line":4175,"end_character":30},"updated":"2020-07-14 10:01:23.000000000","message":"...yet we end up with 0 pinned CPUs after freeing the PCPUs used by the instance.\n\nLater: Oh yeah, the isolate policy is in effect here, so the guest is actually consuming four cores (two cores + thread siblings). This needs a comment, for sure :)\n\nAs an aside, this won\u0027t actually happen in real-life since the \u0027pin_with_siblings\u0027 code is essentially dead code now. We now translate the isolate policy to mean \"host must have hyperthreading disabled/no hyperthreading\" [1] using a trait reported by the virt driver [2]. The only time we\u0027d trigger the \u0027pin_with_siblings\u0027 code path is on older compute nodes that didn\u0027t have both \u0027[compute] cpu_shared_set\u0027 and \u0027[compute] cpu_dedicated_set\u0027 configured, but you *must* have those configured to use the mixed policy so effectively that\u0027s not an option. This test is probably still worth keeping until we remove \u0027(un)pin_with_siblings\u0027, but maybe a note that it\u0027s going to be going away might be helpful?\n\n[1] https://github.com/openstack/nova/blob/1a154f96f436acad8f4333baa538fede5b11305d/nova/scheduler/utils.py#L289-L297\n[2] https://github.com/openstack/nova/blob/1a154f96f436acad8f4333baa538fede5b11305d/nova/virt/libvirt/driver.py#L10960","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"1f17148bf28f05c722bcc3c2316c92b51331d520","unresolved":false,"context_lines":[{"line_number":4172,"context_line":""},{"line_number":4173,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_topo, inst_topo,"},{"line_number":4174,"context_line":"                                                    free\u003dTrue)"},{"line_number":4175,"context_line":"        self.assertEqual(set(), new_cell.cells[0].pinned_cpus)"},{"line_number":4176,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":4177,"context_line":""},{"line_number":4178,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_8f614dac","line":4175,"updated":"2020-07-15 12:54:12.000000000","message":"Your explanation makes sense to my privious confusion about having the \u0027isolate\u0027 and \u0027required/prefer\u0027 cpu thread policy instances in the hyperthread enabled host.\n\nSince the \u0027isolate\u0027 and \u0027required\u0027 cpu thread policy instances hope to be separated, my confusion solved. \n\nUnderstand. And will introduce a note here.","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d23f94a50731bda1cb84764f262a3ba6c27f3a2a","unresolved":false,"context_lines":[{"line_number":4172,"context_line":""},{"line_number":4173,"context_line":"        new_cell \u003d hw.numa_usage_from_instance_numa(host_topo, inst_topo,"},{"line_number":4174,"context_line":"                                                    free\u003dTrue)"},{"line_number":4175,"context_line":"        self.assertEqual(set(), new_cell.cells[0].pinned_cpus)"},{"line_number":4176,"context_line":"        self.assertEqual(0, new_cell.cells[0].cpu_usage)"},{"line_number":4177,"context_line":""},{"line_number":4178,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_904ce142","line":4175,"range":{"start_line":4175,"start_character":25,"end_line":4175,"end_character":30},"in_reply_to":"bf51134e_f09f1db1","updated":"2020-07-14 10:02:13.000000000","message":"You could make this test clearer by including even more CPUs in the host pinned set. i.e. if there were 6 CPUs pinned, then there should be 2 left after unpinning.","commit_id":"493dd5939a449d747f3b99a02808db68e995a55b"}],"nova/virt/hardware.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize, \u0027"},{"line_number":1033,"context_line":"                      \u0027or not enough free pages of the requested size. \u0027"},{"line_number":1034,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"},{"line_number":1035,"context_line":"            return"},{"line_number":1036,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1037,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1038,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_7bca436e","line":1035,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1062,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1063,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1064,"context_line":"                return"},{"line_number":1065,"context_line":"        else:"},{"line_number":1066,"context_line":"            # The host does not support explicit page sizes. Ignore pagesizes"},{"line_number":1067,"context_line":"            # completely."}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_dbc9cf78","line":1064,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"                          \u0027Required: %(required)d, actual: %(actual)d\u0027,"},{"line_number":1075,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1076,"context_line":"                           \u0027actual\u0027: host_cell.memory})"},{"line_number":1077,"context_line":"                return"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    # NOTE(stephenfin): As with memory, do not allow an instance to overcommit"},{"line_number":1080,"context_line":"    # against itself on any NUMA cell"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_bbc4cb60","line":1077,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1088,"context_line":"                          \u0027actual\u0027: len(host_cell.pcpuset),"},{"line_number":1089,"context_line":"                          \u0027cpuset_reserved\u0027: cpuset_reserved"},{"line_number":1090,"context_line":"                      })"},{"line_number":1091,"context_line":"            return"},{"line_number":1092,"context_line":"    else:"},{"line_number":1093,"context_line":"        required_cpus \u003d len(instance_cell.cpuset)"},{"line_number":1094,"context_line":"        if required_cpus \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_1ba177aa","line":1091,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"                          \u0027required\u0027: len(instance_cell.cpuset),"},{"line_number":1098,"context_line":"                          \u0027actual\u0027: len(host_cell.cpuset),"},{"line_number":1099,"context_line":"                      })"},{"line_number":1100,"context_line":"            return"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"    if instance_cell.cpu_policy in ("},{"line_number":1103,"context_line":"        fields.CPUAllocationPolicy.DEDICATED,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_fba3f3af","line":1100,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"                       \u0027vcpus\u0027: len(instance_cell.pcpuset),"},{"line_number":1114,"context_line":"                       \u0027actual\u0027: host_cell.avail_pcpus,"},{"line_number":1115,"context_line":"                       \u0027num_cpu_reserved\u0027: cpuset_reserved})"},{"line_number":1116,"context_line":"            return"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        if instance_cell.memory \u003e host_cell.avail_memory:"},{"line_number":1119,"context_line":"            LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_5babff87","line":1116,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1123,"context_line":"                      {\u0027required\u0027: instance_cell.memory,"},{"line_number":1124,"context_line":"                       \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1125,"context_line":"                       \u0027total\u0027: host_cell.memory})"},{"line_number":1126,"context_line":"            return"},{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":"        # Try to pack the instance cell onto cores"},{"line_number":1129,"context_line":"        instance_cell \u003d _pack_instance_onto_cores("}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_3baefb97","line":1126,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"        )"},{"line_number":1132,"context_line":"        if not instance_cell:"},{"line_number":1133,"context_line":"            LOG.debug(\u0027Failed to map instance cell CPUs to host cell CPUs\u0027)"},{"line_number":1134,"context_line":"            return"},{"line_number":1135,"context_line":""},{"line_number":1136,"context_line":"    elif limits:"},{"line_number":1137,"context_line":"        LOG.debug(\u0027No pinning requested, considering limitations on usable cpu\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_9b946746","line":1134,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"                      \u0027not enough free CPUs to schedule this instance. \u0027"},{"line_number":1144,"context_line":"                      \u0027Usage: %(usage)d, limit: %(limit)d\u0027,"},{"line_number":1145,"context_line":"                      {\u0027usage\u0027: cpu_usage, \u0027limit\u0027: cpu_limit})"},{"line_number":1146,"context_line":"            return"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"        ram_usage \u003d host_cell.memory_usage + instance_cell.memory"},{"line_number":1149,"context_line":"        ram_limit \u003d host_cell.memory * limits.ram_allocation_ratio"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_7b8fe32d","line":1146,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                      \u0027not enough free memory to schedule this instance. \u0027"},{"line_number":1153,"context_line":"                      \u0027Usage: %(usage)d, limit: %(limit)d\u0027,"},{"line_number":1154,"context_line":"                      {\u0027usage\u0027: ram_usage, \u0027limit\u0027: ram_limit})"},{"line_number":1155,"context_line":"            return"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    instance_cell.id \u003d host_cell.id"},{"line_number":1158,"context_line":"    return instance_cell"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_db9eef61","line":1155,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Return value expected","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9d3af2e05b6ebb0abd3bbb85c4e94e6def7cf47d","unresolved":false,"context_lines":[{"line_number":2156,"context_line":"    # indicative of a PCI device being associated with that node"},{"line_number":2157,"context_line":"    if not pci_requests and pci_stats:"},{"line_number":2158,"context_line":"        host_cells \u003d sorted(host_cells, key\u003dlambda cell: cell.id in ["},{"line_number":2159,"context_line":"            pool[\u0027numa_node\u0027] for pool in pci_stats.pools])"},{"line_number":2160,"context_line":""},{"line_number":2161,"context_line":"    for host_cell_perm in itertools.permutations("},{"line_number":2162,"context_line":"            host_cells, len(instance_topology)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_bb996b7a","line":2159,"updated":"2020-04-08 04:23:27.000000000","message":"pep8: error: Item \"None\" of \"Optional[Any]\" has no attribute \"pools\"","commit_id":"06df95f17526257dc432bedf27cfc01136a74c53"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c9890c417113cac036bd6c91f1865170c8868a3","unresolved":false,"context_lines":[{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    # NOTE(stephenfin): As with memory, do not allow an instance to overcommit"},{"line_number":1080,"context_line":"    # against itself on any NUMA cell"},{"line_number":1081,"context_line":"    if instance_cell.cpu_policy \u003d\u003d fields.CPUAllocationPolicy.DEDICATED:"},{"line_number":1082,"context_line":"        required_cpus \u003d len(instance_cell.pcpuset) + cpuset_reserved"},{"line_number":1083,"context_line":"        if required_cpus \u003e len(host_cell.pcpuset):"},{"line_number":1084,"context_line":"            LOG.debug(\u0027Not enough host cell CPUs to fit instance cell; \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_4c405036","line":1081,"range":{"start_line":1081,"start_character":4,"end_line":1081,"end_character":72},"updated":"2020-04-08 17:02:38.000000000","message":"emm...this probably isn\u0027t your fault. we do same check at line 1102...","commit_id":"45a2a4904155e50ad85ed2926a02634aa56a793e"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":1080,"context_line":"    # against itself on any NUMA cell"},{"line_number":1081,"context_line":"    if instance_cell.cpu_policy in ("},{"line_number":1082,"context_line":"        fields.CPUAllocationPolicy.DEDICATED,"},{"line_number":1083,"context_line":"        fields.CPUAllocationPolicy.MIXED):"},{"line_number":1084,"context_line":"        required_cpus \u003d len(instance_cell.pcpuset) + cpuset_reserved"},{"line_number":1085,"context_line":"        if required_cpus \u003e len(host_cell.pcpuset):"},{"line_number":1086,"context_line":"            LOG.debug(\u0027Not enough host cell CPUs to fit instance cell; \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_b8d723bf","line":1083,"updated":"2020-06-29 12:19:49.000000000","message":"Done.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":1080,"context_line":"    # against itself on any NUMA cell"},{"line_number":1081,"context_line":"    if instance_cell.cpu_policy in ("},{"line_number":1082,"context_line":"        fields.CPUAllocationPolicy.DEDICATED,"},{"line_number":1083,"context_line":"        fields.CPUAllocationPolicy.MIXED):"},{"line_number":1084,"context_line":"        required_cpus \u003d len(instance_cell.pcpuset) + cpuset_reserved"},{"line_number":1085,"context_line":"        if required_cpus \u003e len(host_cell.pcpuset):"},{"line_number":1086,"context_line":"            LOG.debug(\u0027Not enough host cell CPUs to fit instance cell; \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_99e44c3e","line":1083,"range":{"start_line":1083,"start_character":40,"end_line":1083,"end_character":42},"updated":"2020-06-22 13:19:59.000000000","message":"nit: drag this down?","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"4e1988a94b57fcdeeb8b34655ca0e3adbd43a037","unresolved":false,"context_lines":[{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"    if instance_cell.cpu_policy in ("},{"line_number":1105,"context_line":"        fields.CPUAllocationPolicy.DEDICATED,"},{"line_number":1106,"context_line":"        fields.CPUAllocationPolicy.MIXED):"},{"line_number":1107,"context_line":"        LOG.debug(\u0027Pinning has been requested\u0027)"},{"line_number":1108,"context_line":"        required_cpus \u003d len(instance_cell.pcpuset) + cpuset_reserved"},{"line_number":1109,"context_line":"        if required_cpus \u003e host_cell.avail_pcpus:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_18e3afa5","line":1106,"updated":"2020-06-29 12:19:49.000000000","message":"Done.","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e3e9856d0e4d3ce72bab273c1416755ee940474b","unresolved":false,"context_lines":[{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"    if instance_cell.cpu_policy in ("},{"line_number":1105,"context_line":"        fields.CPUAllocationPolicy.DEDICATED,"},{"line_number":1106,"context_line":"        fields.CPUAllocationPolicy.MIXED):"},{"line_number":1107,"context_line":"        LOG.debug(\u0027Pinning has been requested\u0027)"},{"line_number":1108,"context_line":"        required_cpus \u003d len(instance_cell.pcpuset) + cpuset_reserved"},{"line_number":1109,"context_line":"        if required_cpus \u003e host_cell.avail_pcpus:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_d9d3645f","line":1106,"range":{"start_line":1106,"start_character":40,"end_line":1106,"end_character":42},"updated":"2020-06-22 13:19:59.000000000","message":"ditto","commit_id":"9bbd9a38c0fbf35992e854f397a7fb141a301e96"}]}
