)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"109ac2f8c37f702d13aabc9125cdac2e19b06a6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bf5642ea_6cccd2f7","updated":"2021-10-28 19:39:12.000000000","message":"So think this can all be simplifed even further. We can merge the emulator threads test and the cpu pinning test into the same test, and leverage the fact that the cpu_dedicated_set+cpu_shared_set combo is going to be different on each host. SO just boot 1 server with emulator threads set to \u0027share\u0027, then live migrate it, and assert the correct things got updated in both the XML and the database. We no longer need a second \"spacer\" server.","commit_id":"2ca84bca95690e25527c16079ea072e42c4bbf10"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"f9b0e461f9d77f108201269dd76ff5ee789c519e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c8b19590_0aad7ae1","in_reply_to":"bf5642ea_6cccd2f7","updated":"2021-10-28 19:50:16.000000000","message":"Yea I like it, I\u0027ll condense them down and give it a try.","commit_id":"2ca84bca95690e25527c16079ea072e42c4bbf10"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cd9ed5e149e761e1884d133801c7577ebd17b438","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"08f6627a_0f29fc7c","in_reply_to":"c8b19590_0aad7ae1","updated":"2021-10-28 23:13:27.000000000","message":"Thinking about this some more, one reason we can keep a second server is to test that they don\u0027t overlap in their CPU pins after live migration. So, assuming each server has dedicated_cpus_per_numa / 2 CPUs, we can:\n\n1. Boot server_a\n2. Boot server_b with a different_host scheduler hint\n3. Live migrate server_a to server_b\u0027s host\n4. Make sure server_a\u0027s pins got updated to match the new host\u0027s config, without overlapping with server_b\u0027s pins.","commit_id":"2ca84bca95690e25527c16079ea072e42c4bbf10"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6aa445ec6790b82fdf3a1326cdbffb45df15df26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"349d430a_4a40221d","updated":"2021-11-09 19:41:03.000000000","message":"One nit inline, can be fixed in a follow-up","commit_id":"55fbe424479d263b86ce9e0b2b73354bdf8b2f99"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"aff9d682039b1da2cb98e47fc9b1412e6decea4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"63d4c464_9182d500","updated":"2021-11-09 19:47:00.000000000","message":"recheck","commit_id":"55fbe424479d263b86ce9e0b2b73354bdf8b2f99"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4ebc6a97a8aceceece45da72fdb14b8ee391f5c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a8c1742d_748712ac","updated":"2021-11-15 16:08:24.000000000","message":"recheck","commit_id":"55fbe424479d263b86ce9e0b2b73354bdf8b2f99"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"e6665eb88a170f1ba438a915e4dbd69dbd260160","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b6b8c14e_75e78087","updated":"2021-11-12 15:57:15.000000000","message":"recheck","commit_id":"55fbe424479d263b86ce9e0b2b73354bdf8b2f99"}],"whitebox_tempest_plugin/api/compute/test_cpu_pinning.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"173225e858eb945ebd6248fb64370529e543b631","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return cell_pins"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def get_server_emulator_threads(self, server_id):"},{"line_number":75,"context_line":"        \"\"\"Get the host CPU numbers to which the server\u0027s emulator threads are"},{"line_number":76,"context_line":"        pinned."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5133b0ad_d53470a5","line":74,"updated":"2021-11-08 23:42:44.000000000","message":"TODO in a different patch, but this exists in the numa_helper now... At some point we\u0027ll need to clean up all these helper methods all over the place. Maybe in retrospect they should have all gone into the base compute test class...","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"65d264ea92bb07d2248f2151d0d4b35084f4fe3d","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return cell_pins"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def get_server_emulator_threads(self, server_id):"},{"line_number":75,"context_line":"        \"\"\"Get the host CPU numbers to which the server\u0027s emulator threads are"},{"line_number":76,"context_line":"        pinned."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"832fab91_dfa2c8cb","line":74,"in_reply_to":"5133b0ad_d53470a5","updated":"2021-11-09 14:52:22.000000000","message":"I\u0027ll add the #TODO directly to the code","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"173225e858eb945ebd6248fb64370529e543b631","unresolved":true,"context_lines":[{"line_number":428,"context_line":"        emulator_threads \u003d \\"},{"line_number":429,"context_line":"            self.get_server_emulator_threads(server[\u0027id\u0027])"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        # Confirm the emulator threads from server is equal to cpu_shared_set"},{"line_number":432,"context_line":"        self.assertEqual("},{"line_number":433,"context_line":"            cpu_shared_set, emulator_threads,"},{"line_number":434,"context_line":"            \u0027Emulator threads for server %s is not the same as CPU set \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"d52a92e6_108df9cb","line":431,"updated":"2021-11-08 23:42:44.000000000","message":"nit: unrelated change?","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"65d264ea92bb07d2248f2151d0d4b35084f4fe3d","unresolved":true,"context_lines":[{"line_number":428,"context_line":"        emulator_threads \u003d \\"},{"line_number":429,"context_line":"            self.get_server_emulator_threads(server[\u0027id\u0027])"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        # Confirm the emulator threads from server is equal to cpu_shared_set"},{"line_number":432,"context_line":"        self.assertEqual("},{"line_number":433,"context_line":"            cpu_shared_set, emulator_threads,"},{"line_number":434,"context_line":"            \u0027Emulator threads for server %s is not the same as CPU set \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"fdedf6d9_6697f4c0","line":431,"in_reply_to":"d52a92e6_108df9cb","updated":"2021-11-09 14:52:22.000000000","message":"Yea this needs to be reverted.","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"173225e858eb945ebd6248fb64370529e543b631","unresolved":true,"context_lines":[{"line_number":641,"context_line":"        if not compute.is_scheduler_filter_enabled(\u0027DifferentHostFilter\u0027):"},{"line_number":642,"context_line":"            raise cls.skipException(\u0027DifferentHostFilter required.\u0027)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_cpu_pinning(self):"},{"line_number":645,"context_line":"        if getattr(CONF.whitebox_hardware, \u0027cpu_topology\u0027, None) is None:"},{"line_number":646,"context_line":"            msg \u003d (\"cpu_topology in whitebox-hardware is not present\")"},{"line_number":647,"context_line":"            raise self.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"f61ca4be_762eeb53","line":644,"updated":"2021-11-08 23:42:44.000000000","message":"Should rename this now, to something like test_cpu_pinning_and_emulator_threads","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"65d264ea92bb07d2248f2151d0d4b35084f4fe3d","unresolved":false,"context_lines":[{"line_number":641,"context_line":"        if not compute.is_scheduler_filter_enabled(\u0027DifferentHostFilter\u0027):"},{"line_number":642,"context_line":"            raise cls.skipException(\u0027DifferentHostFilter required.\u0027)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_cpu_pinning(self):"},{"line_number":645,"context_line":"        if getattr(CONF.whitebox_hardware, \u0027cpu_topology\u0027, None) is None:"},{"line_number":646,"context_line":"            msg \u003d (\"cpu_topology in whitebox-hardware is not present\")"},{"line_number":647,"context_line":"            raise self.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"eb62d467_4950e256","line":644,"in_reply_to":"f61ca4be_762eeb53","updated":"2021-11-09 14:52:22.000000000","message":"Ack","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"173225e858eb945ebd6248fb64370529e543b631","unresolved":true,"context_lines":[{"line_number":642,"context_line":"            raise cls.skipException(\u0027DifferentHostFilter required.\u0027)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_cpu_pinning(self):"},{"line_number":645,"context_line":"        if getattr(CONF.whitebox_hardware, \u0027cpu_topology\u0027, None) is None:"},{"line_number":646,"context_line":"            msg \u003d (\"cpu_topology in whitebox-hardware is not present\")"},{"line_number":647,"context_line":"            raise self.skipException(msg)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"        cpu_topology \u003d \\"},{"line_number":650,"context_line":"            CONF.whitebox_hardware.cpu_topology"},{"line_number":651,"context_line":"        if len(cpu_topology.keys()) \u003c 2:"},{"line_number":652,"context_line":"            msg \u003d (\"Need compute hosts with at least two or more NUMA nodes\")"},{"line_number":653,"context_line":"            raise self.skipException(msg)"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        dedicated_cpus_per_numa \u003d \\"},{"line_number":656,"context_line":"            CONF.whitebox_hardware.dedicated_cpus_per_numa"}],"source_content_type":"text/x-python","patch_set":6,"id":"583f1d41_bf834d46","line":653,"range":{"start_line":645,"start_character":0,"end_line":653,"end_character":41},"updated":"2021-11-08 23:42:44.000000000","message":"Are these skips still necessary? I think we only need to check dedicated_cpus_per_numa now...","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"65d264ea92bb07d2248f2151d0d4b35084f4fe3d","unresolved":true,"context_lines":[{"line_number":642,"context_line":"            raise cls.skipException(\u0027DifferentHostFilter required.\u0027)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_cpu_pinning(self):"},{"line_number":645,"context_line":"        if getattr(CONF.whitebox_hardware, \u0027cpu_topology\u0027, None) is None:"},{"line_number":646,"context_line":"            msg \u003d (\"cpu_topology in whitebox-hardware is not present\")"},{"line_number":647,"context_line":"            raise self.skipException(msg)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"        cpu_topology \u003d \\"},{"line_number":650,"context_line":"            CONF.whitebox_hardware.cpu_topology"},{"line_number":651,"context_line":"        if len(cpu_topology.keys()) \u003c 2:"},{"line_number":652,"context_line":"            msg \u003d (\"Need compute hosts with at least two or more NUMA nodes\")"},{"line_number":653,"context_line":"            raise self.skipException(msg)"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        dedicated_cpus_per_numa \u003d \\"},{"line_number":656,"context_line":"            CONF.whitebox_hardware.dedicated_cpus_per_numa"}],"source_content_type":"text/x-python","patch_set":6,"id":"8e7d2350_f352ecc5","line":653,"range":{"start_line":645,"start_character":0,"end_line":653,"end_character":41},"in_reply_to":"583f1d41_bf834d46","updated":"2021-11-09 14:52:22.000000000","message":"If we do not want to require multi-numa per host we can definitely remove it (more discussion on #L672)","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"173225e858eb945ebd6248fb64370529e543b631","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        # Boot 2 servers such that their vCPUs \"fill\" a NUMA node."},{"line_number":670,"context_line":"        specs \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":671,"context_line":"                 \u0027hw:emulator_threads_policy\u0027: \u0027share\u0027}"},{"line_number":672,"context_line":"        flavor \u003d self.create_flavor(vcpus\u003d(dedicated_cpus_per_numa - 1),"},{"line_number":673,"context_line":"                                    extra_specs\u003dspecs)"},{"line_number":674,"context_line":"        server_a \u003d self.create_test_server(flavor\u003dflavor[\u0027id\u0027])"},{"line_number":675,"context_line":"        # TODO(artom) As of 2.68 we can no longer force a live-migration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"6c692dd5_41ec3884","line":672,"range":{"start_line":672,"start_character":66,"end_line":672,"end_character":70},"updated":"2021-11-08 23:42:44.000000000","message":"Why the -1? If we want both instances to fit on the same host after the live migration, this should be /2, no?","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"366d496ceb0dfb64e0133827d7e52d1399b1cf78","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        # Boot 2 servers such that their vCPUs \"fill\" a NUMA node."},{"line_number":670,"context_line":"        specs \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":671,"context_line":"                 \u0027hw:emulator_threads_policy\u0027: \u0027share\u0027}"},{"line_number":672,"context_line":"        flavor \u003d self.create_flavor(vcpus\u003d(dedicated_cpus_per_numa - 1),"},{"line_number":673,"context_line":"                                    extra_specs\u003dspecs)"},{"line_number":674,"context_line":"        server_a \u003d self.create_test_server(flavor\u003dflavor[\u0027id\u0027])"},{"line_number":675,"context_line":"        # TODO(artom) As of 2.68 we can no longer force a live-migration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"81566ee2_383df31d","line":672,"range":{"start_line":672,"start_character":66,"end_line":672,"end_character":70},"in_reply_to":"4a609842_03815580","updated":"2021-11-09 15:47:04.000000000","message":"IIRC the only place where multiple NUMA matters is hugepages [1], so I\u0027m fine with the CPU tests running with only 1 NUMA node, since upstream we don\u0027t have multi-numa VMs for CI.\n\n[1] https://github.com/openstack/nova/blob/master/nova/virt/libvirt/migration.py#L123-L124","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"65d264ea92bb07d2248f2151d0d4b35084f4fe3d","unresolved":true,"context_lines":[{"line_number":669,"context_line":"        # Boot 2 servers such that their vCPUs \"fill\" a NUMA node."},{"line_number":670,"context_line":"        specs \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":671,"context_line":"                 \u0027hw:emulator_threads_policy\u0027: \u0027share\u0027}"},{"line_number":672,"context_line":"        flavor \u003d self.create_flavor(vcpus\u003d(dedicated_cpus_per_numa - 1),"},{"line_number":673,"context_line":"                                    extra_specs\u003dspecs)"},{"line_number":674,"context_line":"        server_a \u003d self.create_test_server(flavor\u003dflavor[\u0027id\u0027])"},{"line_number":675,"context_line":"        # TODO(artom) As of 2.68 we can no longer force a live-migration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"4a609842_03815580","line":672,"range":{"start_line":672,"start_character":66,"end_line":672,"end_character":70},"in_reply_to":"6c692dd5_41ec3884","updated":"2021-11-09 14:52:22.000000000","message":"I was thinking the thread policy was isolate so I can change that.  In regards to how to approach this, the original test expected two or more NUMAs per host for test_cpu_pinning, thats why I kept the check on #L651.  I believe the original intention for the test is to validate multi-numa, so ideally I want to fill an entire NUMA with a single guest.  I can change it to not require multiple NUMAs and update this to dedicated_cpus_per_numa/2. I do think we lose some of the original intention of test_cpu_pinning with the change though, wdyt?  (Also I should probably add a #TODO to have another variant of this test with thread isloate added in the future.)","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4dd967540b855dc116380c2a37f3daa4ad71ba6a","unresolved":false,"context_lines":[{"line_number":669,"context_line":"        # Boot 2 servers such that their vCPUs \"fill\" a NUMA node."},{"line_number":670,"context_line":"        specs \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":671,"context_line":"                 \u0027hw:emulator_threads_policy\u0027: \u0027share\u0027}"},{"line_number":672,"context_line":"        flavor \u003d self.create_flavor(vcpus\u003d(dedicated_cpus_per_numa - 1),"},{"line_number":673,"context_line":"                                    extra_specs\u003dspecs)"},{"line_number":674,"context_line":"        server_a \u003d self.create_test_server(flavor\u003dflavor[\u0027id\u0027])"},{"line_number":675,"context_line":"        # TODO(artom) As of 2.68 we can no longer force a live-migration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"a3aa4386_c3f6a71e","line":672,"range":{"start_line":672,"start_character":66,"end_line":672,"end_character":70},"in_reply_to":"81566ee2_383df31d","updated":"2021-11-09 15:54:07.000000000","message":"Great I\u0027ll update it based on your comments then.","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"173225e858eb945ebd6248fb64370529e543b631","unresolved":true,"context_lines":[{"line_number":700,"context_line":"            db_topo \u003d self._get_db_numa_topology(server[\u0027id\u0027])"},{"line_number":701,"context_line":"            pcpus \u003d self._get_pcpus_from_cpu_pins("},{"line_number":702,"context_line":"                self._get_cpu_pins_from_db_topology(db_topo))"},{"line_number":703,"context_line":"            self.assertTrue(pcpus.issubset(cpu_dedicated_set))"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"            # Gather the emulator threads configured on the guest. Verify the"},{"line_number":706,"context_line":"            # emulator threads on the guest are a subset of the cpu_shared_set"}],"source_content_type":"text/x-python","patch_set":6,"id":"4850e330_025b4847","line":703,"updated":"2021-11-08 23:42:44.000000000","message":"Should check the XML as well...","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"65d264ea92bb07d2248f2151d0d4b35084f4fe3d","unresolved":false,"context_lines":[{"line_number":700,"context_line":"            db_topo \u003d self._get_db_numa_topology(server[\u0027id\u0027])"},{"line_number":701,"context_line":"            pcpus \u003d self._get_pcpus_from_cpu_pins("},{"line_number":702,"context_line":"                self._get_cpu_pins_from_db_topology(db_topo))"},{"line_number":703,"context_line":"            self.assertTrue(pcpus.issubset(cpu_dedicated_set))"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"            # Gather the emulator threads configured on the guest. Verify the"},{"line_number":706,"context_line":"            # emulator threads on the guest are a subset of the cpu_shared_set"}],"source_content_type":"text/x-python","patch_set":6,"id":"a7db2e37_46ac3569","line":703,"in_reply_to":"4850e330_025b4847","updated":"2021-11-09 14:52:22.000000000","message":"Ack","commit_id":"d79a658e9233d9280de0fc7711fe7216450d344f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6aa445ec6790b82fdf3a1326cdbffb45df15df26","unresolved":true,"context_lines":[{"line_number":658,"context_line":"                \u0027Need at least 1 or more pCPUs per NUMA allocated to the \u0027"},{"line_number":659,"context_line":"                \u0027cpu_shared_set of the compute host\u0027)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        # Boot 2 servers such that their vCPUs \"fill\" a NUMA node."},{"line_number":662,"context_line":"        specs \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":663,"context_line":"                 \u0027hw:emulator_threads_policy\u0027: \u0027share\u0027}"},{"line_number":664,"context_line":"        flavor \u003d self.create_flavor(vcpus\u003d(int(dedicated_cpus_per_numa / 2)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"8b71189a_87f533ec","line":661,"updated":"2021-11-09 19:41:03.000000000","message":"This comment is no longer correct","commit_id":"55fbe424479d263b86ce9e0b2b73354bdf8b2f99"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b3c80d77cfb8fd2ac1eb9601993127d944fa24fd","unresolved":false,"context_lines":[{"line_number":658,"context_line":"                \u0027Need at least 1 or more pCPUs per NUMA allocated to the \u0027"},{"line_number":659,"context_line":"                \u0027cpu_shared_set of the compute host\u0027)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        # Boot 2 servers such that their vCPUs \"fill\" a NUMA node."},{"line_number":662,"context_line":"        specs \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":663,"context_line":"                 \u0027hw:emulator_threads_policy\u0027: \u0027share\u0027}"},{"line_number":664,"context_line":"        flavor \u003d self.create_flavor(vcpus\u003d(int(dedicated_cpus_per_numa / 2)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"a5db75ca_365338a2","line":661,"in_reply_to":"8b71189a_87f533ec","updated":"2021-11-09 19:42:25.000000000","message":"Ack, good catch.","commit_id":"55fbe424479d263b86ce9e0b2b73354bdf8b2f99"}]}
