)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"e5cef82075427ac1d4938a36bdab56dffbcf13c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"427c68ad_849322c8","updated":"2023-11-29 18:37:33.000000000","message":"recheck","commit_id":"195e249faa041c2c26331186027f758607a2baeb"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"6d635b066579b85a92050f2631eae6c3d295fd77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"df2da1b9_b5724e82","updated":"2023-11-29 20:17:02.000000000","message":"recheck","commit_id":"195e249faa041c2c26331186027f758607a2baeb"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ea7e099e8b7a3e099585e0650f63121549038f8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6a7f589f_ed3471e1","updated":"2024-02-07 19:12:30.000000000","message":"I\u0027ll be honest I didn\u0027t look in too much depth at the new code in test_cpu_pinning.py, but it seems sensible enough. -1 to get a discussion going on the nodes.yaml schema, see inline.","commit_id":"60a24206baa6d28c380742c0d78b253f5f8c2c9e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"ca7a9dae0ea36415b02ff74069309dfe18694d8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"42ef4ef9_84da9c04","updated":"2024-03-20 18:32:00.000000000","message":"Tested downstream as well against SR-IOV bed:\n(overcloud) [stack@undercloud-0 tempest-dir]$ cat ../whitebox_compute_hosts.yaml \ncomputesriov-0.localdomain:\n  services:\n    libvirt:\n      container_name: nova_virtqemud\n      start_command: \u0027systemctl start tripleo_nova_virtqemud\u0027\n      stop_command: \u0027systemctl stop tripleo_nova_virtqemud\u0027\n    nova-compute:\n      container_name: nova_compute\n      config_path: \u0027/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf\u0027\n      start_command: \u0027systemctl start tripleo_nova_compute\u0027\n      stop_command: \u0027systemctl stop tripleo_nova_compute\u0027\n  cpu_shared_set: 0,1,2,3\n  cpu_dedicated_set: \u00274-19\u0027\n  topology:\n      socket-0:\n        numa-0:\n          cpus: 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38\n        numa-1:\n          cpus: 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39\ncomputesriov-1.localdomain:\n  services:\n    libvirt:\n      container_name: nova_virtqemud\n      start_command: \u0027systemctl start tripleo_nova_virtqemud\u0027\n      stop_command: \u0027systemctl stop tripleo_nova_virtqemud\u0027\n    nova-compute:\n      container_name: nova_compute\n      config_path: \u0027/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf\u0027\n      start_command: \u0027systemctl start tripleo_nova_compute\u0027\n      stop_command: \u0027systemctl stop tripleo_nova_compute\u0027\n  cpu_shared_set: \"20-23\"\n  cpu_dedicated_set: \"24-39\"\n  topology:\n      socket-0:\n        numa-0:\n          cpus: 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38\n        numa-1:\n          cpus: 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39\n\n\n\n(overcloud) [stack@undercloud-0 tempest-dir]$ tempest run --regex whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_cpu_dedicated\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_cpu_dedicated [20.705999s] ... ok\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nTotals\n\u003d\u003d\u003d\u003d\u003d\u003d\nRan: 1 tests in 20.7060 sec.\n - Passed: 1\n - Skipped: 0\n - Expected Fail: 0\n - Unexpected Success: 0\n - Failed: 0\nSum of execute time for each test: 20.7060 sec.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nWorker Balance\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n - Worker 0 (1 tests) \u003d\u003e 0:00:20.705999\n(overcloud) [stack@undercloud-0 tempest-dir]$ tempest run --serial --regex whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest|whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest\n-bash: whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest: command not found\n^C(overcloud) [stack@undercloud-0 tempest-dir]$ ^C\n(overcloud) [stack@undercloud-0 tempest-dir]$ tempest run --serial --regex \u0027whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest|whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest\u0027\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_cpu_dedicated [14.315375s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_cpu_shared [4.072233s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_reboot_pinned_server [11.664222s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_resize_pinned_server_to_unpinned [71.951982s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.CPUPolicyTest.test_resize_unpinned_server_to_pinned [64.689604s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest.test_emulator_no_extra_cpu [2.668150s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest.test_policy_isolate [13.053344s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest.test_policy_share_cpu_shared_set [5.875467s] ... ok\n{0} whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorThreadTest.test_policy_share_cpu_shared_unset [364.002927s] ... ok","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"e61e7847_309842ed","updated":"2024-04-17 00:30:16.000000000","message":"Lots of small nits that could have been a FUP, but get_host_details(host\u003dNone) and the (dedicated|shared)_cpus_per_numa needs to be sorted.","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4a82eb673ce152c40537f625ccbf549d9ec631e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"a987effd_db0f3d6e","updated":"2024-04-22 20:25:51.000000000","message":"Two nits inline, but these can be a follow up. Let\u0027s fix the merge conflicts, then we can +W. At some point we\u0027ll need to think if we can get rid of the (dedicated|shared)cpus_per_numa config options by converting anything that uses them into similar logic as here.","commit_id":"9ffd0579a8a6030234e16ea9e2951dc6e83d7615"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"2b810e12f182ccce4eb98ec809452b58ddd480e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"2e1261c7_87382510","updated":"2024-04-23 13:53:50.000000000","message":"recheck","commit_id":"c7be64db6f53daf97466e8adb0df2f1ef39a94d2"}],"playbooks/templates/whitebox-devstack-multinode.yaml.j2":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ea7e099e8b7a3e099585e0650f63121549038f8a","unresolved":true,"context_lines":[{"line_number":11,"context_line":"      stop_command: \u0027systemctl stop devstack@n-cpu\u0027"},{"line_number":12,"context_line":"  cpu_shared_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_shared_set\u0027] }}"},{"line_number":13,"context_line":"  cpu_dedicated_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_dedicated_set\u0027] }}"},{"line_number":14,"context_line":"  numa_socket_map:"},{"line_number":15,"context_line":"    0:0"},{"line_number":16,"context_line":"  numa:"},{"line_number":17,"context_line":"    node-0:"}],"source_content_type":"text/x-jinja2","patch_set":11,"id":"c419f6bf_7d0f5e52","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":17},"updated":"2024-02-07 19:12:30.000000000","message":"Can we name this something more evocative? Since we don\u0027t have documentation for nodes.yaml, I feel like it should be self-evident (which everything else in this file is).\n\nI\u0027m guessing this means which NUMA nodes are in which socket? This is mostly fine, but be aware that systems exist that do it the other way around: multiple sockets per NUMA node. At least one case (the socket PCI affinity policy) Nova explicitly does NOT support this kind of topology, so I think we\u0027re safe only assuming the other kind (multiple NUMA nodes per socket)?\n\nIn any case, I think something as follows would be more readable:\n\n    sockets:\n        socket-0:\n            numa-0\n            \nI wonder if we can unify this with the CPU stuff lower down, into something like (as a random example):\n\n    topology:\n        socket-0:\n            numa-0:\n                cpus: 0,2,4,6\n            numa-1:\n                cpus: 1,3,5,7\n        socket-1:\n            \u003cetc\u003e\n            \nThat would also make it more amenable to being extended to add the PCI device stuff later on, as \"topology\" is more general than \"numa\", but maybe that\u0027s just semantics.","commit_id":"60a24206baa6d28c380742c0d78b253f5f8c2c9e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b96eb0bd3bd23047e47ebfc69ee25c7320269494","unresolved":false,"context_lines":[{"line_number":11,"context_line":"      stop_command: \u0027systemctl stop devstack@n-cpu\u0027"},{"line_number":12,"context_line":"  cpu_shared_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_shared_set\u0027] }}"},{"line_number":13,"context_line":"  cpu_dedicated_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_dedicated_set\u0027] }}"},{"line_number":14,"context_line":"  numa_socket_map:"},{"line_number":15,"context_line":"    0:0"},{"line_number":16,"context_line":"  numa:"},{"line_number":17,"context_line":"    node-0:"}],"source_content_type":"text/x-jinja2","patch_set":11,"id":"9b9058a2_beb952db","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":17},"in_reply_to":"35cc2c20_542ba221","updated":"2024-03-22 14:33:53.000000000","message":"Acknowledged","commit_id":"60a24206baa6d28c380742c0d78b253f5f8c2c9e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"6dcbad9f5c1e8b07bd71d0933879ed3d230d4f58","unresolved":true,"context_lines":[{"line_number":11,"context_line":"      stop_command: \u0027systemctl stop devstack@n-cpu\u0027"},{"line_number":12,"context_line":"  cpu_shared_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_shared_set\u0027] }}"},{"line_number":13,"context_line":"  cpu_dedicated_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_dedicated_set\u0027] }}"},{"line_number":14,"context_line":"  numa_socket_map:"},{"line_number":15,"context_line":"    0:0"},{"line_number":16,"context_line":"  numa:"},{"line_number":17,"context_line":"    node-0:"}],"source_content_type":"text/x-jinja2","patch_set":11,"id":"35cc2c20_542ba221","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":17},"in_reply_to":"c419f6bf_7d0f5e52","updated":"2024-02-07 19:19:23.000000000","message":"I do like the overall flow of this more, especially from a readability standpoint.  I think something like this makes sense to do over the current approach.","commit_id":"60a24206baa6d28c380742c0d78b253f5f8c2c9e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a08fc53a86c402c08fdf3b5f1b69c89605f85885","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      config_path: \u0027/etc/nova/nova-cpu.conf\u0027"},{"line_number":10,"context_line":"      start_command: \u0027systemctl start devstack@n-cpu\u0027"},{"line_number":11,"context_line":"      stop_command: \u0027systemctl stop devstack@n-cpu\u0027"},{"line_number":12,"context_line":"  cpu_shared_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_shared_set\u0027] }}"},{"line_number":13,"context_line":"  cpu_dedicated_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_dedicated_set\u0027] }}"},{"line_number":14,"context_line":"  topology:"},{"line_number":15,"context_line":"      socket-0:"}],"source_content_type":"text/x-jinja2","patch_set":13,"id":"db32aa64_e106b935","line":12,"updated":"2024-03-22 14:01:58.000000000","message":"I don\u0027t like that these live one level directly below the host... as we move more stuff into noes_yaml and out of the config file, it\u0027s going to become messy.\n\nThat being said, I\u0027m not sure what the best solution is.. just adding a `config` element seems pointless, as it\u0027s just moving the problem, and `config` isn\u0027t entirely correct, as there will probably be stuff that isn\u0027t strictly config...\n\nI wonder if the best course of action isn\u0027t to just bite the bullet, and redo `services` to look something like this:\n\n    services:\n      nova-compute:\n        config:\n          path: /etc/nova/nova-cpu.conf\n          DEFAULT: # this corresponds to the [DEFAULT] section in nova.conf\n            cpu_shared_set: 1-42\n            cpu_dedicated_set: 42-1337\n          libvirt: # this corresponds to the [libvirt] section in nova.conf\n            [...]\n            \nI might be overthinking this, and we can just leave this as is, and solve that problem when we actually hit it...\n\nThoughts?","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b96eb0bd3bd23047e47ebfc69ee25c7320269494","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      config_path: \u0027/etc/nova/nova-cpu.conf\u0027"},{"line_number":10,"context_line":"      start_command: \u0027systemctl start devstack@n-cpu\u0027"},{"line_number":11,"context_line":"      stop_command: \u0027systemctl stop devstack@n-cpu\u0027"},{"line_number":12,"context_line":"  cpu_shared_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_shared_set\u0027] }}"},{"line_number":13,"context_line":"  cpu_dedicated_set: {{ hostvars[\u0027controller\u0027][\u0027devstack_local_conf\u0027][\u0027post-config\u0027][\u0027$NOVA_CONF\u0027][\u0027compute\u0027][\u0027cpu_dedicated_set\u0027] }}"},{"line_number":14,"context_line":"  topology:"},{"line_number":15,"context_line":"      socket-0:"}],"source_content_type":"text/x-jinja2","patch_set":13,"id":"dbad7e71_73a73a4f","line":12,"in_reply_to":"db32aa64_e106b935","updated":"2024-03-22 14:33:53.000000000","message":"Do you have any examples of other elements that could make it messy?  Not that I disagree I\u0027m not just not able to visual what issues could over complicate the current approach.","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"}],"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":"a08fc53a86c402c08fdf3b5f1b69c89605f85885","unresolved":true,"context_lines":[{"line_number":121,"context_line":"            numa_topology \u003d whitebox_utils.normalize_json(numa_topology)"},{"line_number":122,"context_line":"        return numa_topology"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _get_cpu_set(self, host, cpu_set_type):"},{"line_number":125,"context_line":"        \"\"\"Return cpu dedicated or shared set configured for the provided host."},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        cpu_set \u003d self.hosts_details.get(host).get(cpu_set_type, [])"}],"source_content_type":"text/x-python","patch_set":13,"id":"c7f61b97_8592b78b","line":124,"updated":"2024-03-22 14:01:58.000000000","message":"Honestly, even this could be split into two methods, one for shared, one for dedicated.","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b96eb0bd3bd23047e47ebfc69ee25c7320269494","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            numa_topology \u003d whitebox_utils.normalize_json(numa_topology)"},{"line_number":122,"context_line":"        return numa_topology"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _get_cpu_set(self, host, cpu_set_type):"},{"line_number":125,"context_line":"        \"\"\"Return cpu dedicated or shared set configured for the provided host."},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        cpu_set \u003d self.hosts_details.get(host).get(cpu_set_type, [])"}],"source_content_type":"text/x-python","patch_set":13,"id":"42386a66_079c67ec","line":124,"in_reply_to":"c7f61b97_8592b78b","updated":"2024-03-22 14:33:53.000000000","message":"Acknowledged","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a08fc53a86c402c08fdf3b5f1b69c89605f85885","unresolved":true,"context_lines":[{"line_number":141,"context_line":"        self.dedicated_cpus_per_guest \u003d len(available_dedicated_vcpus) // 2"},{"line_number":142,"context_line":"        self.shared_vcpus_per_guest \u003d len(available_shared_vcpus) // 2"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _determine_cpu_sizes(self, cpu_set_type, minimum_length\u003d1):"},{"line_number":145,"context_line":"        cpu_set \u003d []"},{"line_number":146,"context_line":"        gathered_lists \u003d []"},{"line_number":147,"context_line":"        for host in self.hosts_details.keys():"}],"source_content_type":"text/x-python","patch_set":13,"id":"6ea1b7f6_0678b33f","line":144,"updated":"2024-03-22 14:01:58.000000000","message":"This is trying to do too many things at once, and becomes confusing. Don\u0027t be afraid or writing \"dumb\" code :) A year from now, \"dumb\" becomes \"clear and easy to understand and maintain\".\n\nI\u0027d have two methods, one for getting the cpu_shared_set size, one for cpu_dedicated_size, and their callers can skip if the sizes are too small for the test.","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b96eb0bd3bd23047e47ebfc69ee25c7320269494","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        self.dedicated_cpus_per_guest \u003d len(available_dedicated_vcpus) // 2"},{"line_number":142,"context_line":"        self.shared_vcpus_per_guest \u003d len(available_shared_vcpus) // 2"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _determine_cpu_sizes(self, cpu_set_type, minimum_length\u003d1):"},{"line_number":145,"context_line":"        cpu_set \u003d []"},{"line_number":146,"context_line":"        gathered_lists \u003d []"},{"line_number":147,"context_line":"        for host in self.hosts_details.keys():"}],"source_content_type":"text/x-python","patch_set":13,"id":"96549484_418245a6","line":144,"in_reply_to":"6ea1b7f6_0678b33f","updated":"2024-03-22 14:33:53.000000000","message":"Acknowledged","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a08fc53a86c402c08fdf3b5f1b69c89605f85885","unresolved":true,"context_lines":[{"line_number":425,"context_line":"            self._get_cpu_sets_per_numa(\u0027cpu_dedicated_set\u0027)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    @classmethod"},{"line_number":428,"context_line":"    def skip_checks(cls):"},{"line_number":429,"context_line":"        super(EmulatorThreadTest, cls).skip_checks()"},{"line_number":430,"context_line":"        if getattr(CONF.whitebox_hardware, \u0027cpu_topology\u0027, None) is None:"},{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""}],"source_content_type":"text/x-python","patch_set":13,"id":"0b64dc66_002a94d4","line":428,"updated":"2024-03-22 14:01:58.000000000","message":"We\u0027ll need to remove/adjust this skip check","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b96eb0bd3bd23047e47ebfc69ee25c7320269494","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            self._get_cpu_sets_per_numa(\u0027cpu_dedicated_set\u0027)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    @classmethod"},{"line_number":428,"context_line":"    def skip_checks(cls):"},{"line_number":429,"context_line":"        super(EmulatorThreadTest, cls).skip_checks()"},{"line_number":430,"context_line":"        if getattr(CONF.whitebox_hardware, \u0027cpu_topology\u0027, None) is None:"},{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""}],"source_content_type":"text/x-python","patch_set":13,"id":"67f3d379_9dbe922b","line":428,"in_reply_to":"0b64dc66_002a94d4","updated":"2024-03-22 14:33:53.000000000","message":"Acknowledged","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a08fc53a86c402c08fdf3b5f1b69c89605f85885","unresolved":true,"context_lines":[{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""},{"line_number":432,"context_line":"            raise cls.skipException(msg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def _get_cpu_sets_per_numa(self, cpu_set_type):"},{"line_number":435,"context_line":"        \"\"\"Create list that maps the number of PCPUs per NUMA that intersect"},{"line_number":436,"context_line":"        with the provided cpu set type."},{"line_number":437,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"b09a413b_6f0e67c5","line":434,"updated":"2024-03-22 14:01:58.000000000","message":"It mighe be simpler to just... declare this? Either under the existing topology section in ndoes_yaml, or in a new hardware section?","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""},{"line_number":432,"context_line":"            raise cls.skipException(msg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def _get_cpu_sets_per_numa(self, cpu_set_type):"},{"line_number":435,"context_line":"        \"\"\"Create list that maps the number of PCPUs per NUMA that intersect"},{"line_number":436,"context_line":"        with the provided cpu set type."},{"line_number":437,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"e47556a2_b363db6c","line":434,"in_reply_to":"9fc8ebf1_de7eaa9c","updated":"2024-04-17 00:30:16.000000000","message":"Wait hold on. We already have (dedicated|shared)_cpus_per_numa as config options, with the assumption/expectation/requirement that they\u0027ll be consistent across all the compute hosts. Just because we have nodes.yaml for some of the things that change depending on which host you\u0027re one, doesn\u0027t mean (dedicated|shared)_cpus_per_numa have to move to nodes.yaml. Seems to me the current config options are doing their job well.\n\nThinking about this some more, the _one_ reason we might want them in nodes.yaml is for easy checking of consistency. IOW, (dedicated|shared)_cpus_per_numa should be consistent with the individual cpu_(dedicated|shared)_set values for each host. But (dedicated|shared)_cpus_per_numa should still be unique and global for all compute hosts in the deployment.","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b96eb0bd3bd23047e47ebfc69ee25c7320269494","unresolved":true,"context_lines":[{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""},{"line_number":432,"context_line":"            raise cls.skipException(msg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def _get_cpu_sets_per_numa(self, cpu_set_type):"},{"line_number":435,"context_line":"        \"\"\"Create list that maps the number of PCPUs per NUMA that intersect"},{"line_number":436,"context_line":"        with the provided cpu set type."},{"line_number":437,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"9fc8ebf1_de7eaa9c","line":434,"in_reply_to":"b09a413b_6f0e67c5","updated":"2024-03-22 14:33:53.000000000","message":"Given the direction of everything else that would make sense.  Maybe if we didn\u0027t want to overcrowd the file, when the global var is initially created it would also do those calculations and add them in respectively for each host?","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a0739d0af0f2b034895eced4b01d9701649b6b8","unresolved":false,"context_lines":[{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""},{"line_number":432,"context_line":"            raise cls.skipException(msg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def _get_cpu_sets_per_numa(self, cpu_set_type):"},{"line_number":435,"context_line":"        \"\"\"Create list that maps the number of PCPUs per NUMA that intersect"},{"line_number":436,"context_line":"        with the provided cpu set type."},{"line_number":437,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"cfe4da30_20ee0390","line":434,"in_reply_to":"d1274356_1e49aced","updated":"2024-04-17 11:14:54.000000000","message":"i would liek to see this merged sooner rather then later os we shoudl proably have that confversation later but there are issues wiht complex config options (dict/list opts) and how the ci-framework and test-operator work \nmy inclination is we should prefer nodes.yaml for our config over what we were doign previosuly with the tempets config.\n\nat least for now string, int or boolean options.\n\ni also kind of like storing all the node/numa info in oneplace instead of spliting it so i thing using nodes.yaml for the  (dedicated|shared)_cpus_per_numa is the better long term choice because of locality if info\n\ni didnt include that option speficically in \nhttps://etherpad.opendev.org/p/whitebox-nodes-yaml\nbut i was envisioning nodes.yaml becoming or primary configuraiton for anything host related.\n\nthe number of cpus per numa node is host related even if its the same on all hosts.","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":431,"context_line":"            msg \u003d \"cpu_topology in whitebox-hardware is not present\""},{"line_number":432,"context_line":"            raise cls.skipException(msg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def _get_cpu_sets_per_numa(self, cpu_set_type):"},{"line_number":435,"context_line":"        \"\"\"Create list that maps the number of PCPUs per NUMA that intersect"},{"line_number":436,"context_line":"        with the provided cpu set type."},{"line_number":437,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"d1274356_1e49aced","line":434,"in_reply_to":"e47556a2_b363db6c","updated":"2024-04-17 02:33:03.000000000","message":"Make sense I\u0027ll go back to the config parameters for the per_numa variables.","commit_id":"92aa4b9bd5ad48f30ca8b62506a94b2021df672a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":121,"context_line":"            numa_topology \u003d whitebox_utils.normalize_json(numa_topology)"},{"line_number":122,"context_line":"        return numa_topology"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _get_cpu_set(self, host, cpu_set):"},{"line_number":125,"context_line":"        cpu_set \u003d self.hosts_details.get(host).get(cpu_set, [])"},{"line_number":126,"context_line":"        return hardware.parse_cpu_spec(cpu_set)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"14d2f48f_a5b354f9","line":124,"updated":"2024-04-17 00:30:16.000000000","message":"We can do this in a FUP, but could you just get rid of this completely and inline the contents into the two methods below?","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            numa_topology \u003d whitebox_utils.normalize_json(numa_topology)"},{"line_number":122,"context_line":"        return numa_topology"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _get_cpu_set(self, host, cpu_set):"},{"line_number":125,"context_line":"        cpu_set \u003d self.hosts_details.get(host).get(cpu_set, [])"},{"line_number":126,"context_line":"        return hardware.parse_cpu_spec(cpu_set)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"d424c4ef_570c190a","line":124,"in_reply_to":"14d2f48f_a5b354f9","updated":"2024-04-17 02:33:03.000000000","message":"Acknowledged","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":125,"context_line":"        cpu_set \u003d self.hosts_details.get(host).get(cpu_set, [])"},{"line_number":126,"context_line":"        return hardware.parse_cpu_spec(cpu_set)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _get_dedicated_cpu_set_of_host(self, host):"},{"line_number":129,"context_line":"        \"\"\"Return cpu dedicated or shared set configured for the provided host."},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        return self._get_cpu_set(host, \u0027cpu_dedicated_set\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"71dd4c75_6df6bd27","line":128,"updated":"2024-04-17 00:30:16.000000000","message":"nit: _get_host_cpu_dedicated_set","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        cpu_set \u003d self.hosts_details.get(host).get(cpu_set, [])"},{"line_number":126,"context_line":"        return hardware.parse_cpu_spec(cpu_set)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _get_dedicated_cpu_set_of_host(self, host):"},{"line_number":129,"context_line":"        \"\"\"Return cpu dedicated or shared set configured for the provided host."},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        return self._get_cpu_set(host, \u0027cpu_dedicated_set\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"973a7139_5ce60cb2","line":128,"in_reply_to":"71dd4c75_6df6bd27","updated":"2024-04-17 02:33:03.000000000","message":"Acknowledged","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        return self._get_cpu_set(host, \u0027cpu_dedicated_set\u0027)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _get_shared_cpu_set_of_host(self, host):"},{"line_number":134,"context_line":"        \"\"\"Return cpu dedicated or shared set configured for the provided host."},{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        return self._get_cpu_set(host, \u0027cpu_shared_set\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"4b3def8a_2f78d5a1","line":133,"updated":"2024-04-17 00:30:16.000000000","message":"nit: _get_host_cpu_shared_set","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        return self._get_cpu_set(host, \u0027cpu_dedicated_set\u0027)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _get_shared_cpu_set_of_host(self, host):"},{"line_number":134,"context_line":"        \"\"\"Return cpu dedicated or shared set configured for the provided host."},{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        return self._get_cpu_set(host, \u0027cpu_shared_set\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1dc05637_9db1f6c9","line":133,"in_reply_to":"4b3def8a_2f78d5a1","updated":"2024-04-17 02:33:03.000000000","message":"Acknowledged","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        return self._get_cpu_set(host, \u0027cpu_shared_set\u0027)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_shared_set_size(self):"},{"line_number":139,"context_line":"        gathered_lists \u003d []"},{"line_number":140,"context_line":"        for host in self.hosts_details.keys():"},{"line_number":141,"context_line":"            available_set \u003d self._get_shared_cpu_set_of_host(host)"}],"source_content_type":"text/x-python","patch_set":17,"id":"e6131b67_a62d9a1b","line":138,"updated":"2024-04-17 00:30:16.000000000","message":"This entire method can be rewritten to be a one-liner list comprehension:\n\n    [self._get_shared_cpu_set_of_host(host) for host in self.hosts_details.keys()]\n    \nSince you\u0027re only calling _get_shared_set_size() in one place on L166, I think this can just be inline there.","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        return self._get_cpu_set(host, \u0027cpu_shared_set\u0027)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_shared_set_size(self):"},{"line_number":139,"context_line":"        gathered_lists \u003d []"},{"line_number":140,"context_line":"        for host in self.hosts_details.keys():"},{"line_number":141,"context_line":"            available_set \u003d self._get_shared_cpu_set_of_host(host)"}],"source_content_type":"text/x-python","patch_set":17,"id":"099c9ef5_682e905e","line":138,"in_reply_to":"e6131b67_a62d9a1b","updated":"2024-04-17 02:33:03.000000000","message":"Acknowledged","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":142,"context_line":"            gathered_lists.append(available_set)"},{"line_number":143,"context_line":"        return gathered_lists"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def _get_dedicated_set_size(self):"},{"line_number":146,"context_line":"        gathered_lists \u003d []"},{"line_number":147,"context_line":"        for host in self.hosts_details.keys():"},{"line_number":148,"context_line":"            available_set \u003d self._get_dedicated_cpu_set_of_host(host)"}],"source_content_type":"text/x-python","patch_set":17,"id":"a8f295db_154eb5d7","line":145,"updated":"2024-04-17 00:30:16.000000000","message":"Ditto.","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            gathered_lists.append(available_set)"},{"line_number":143,"context_line":"        return gathered_lists"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def _get_dedicated_set_size(self):"},{"line_number":146,"context_line":"        gathered_lists \u003d []"},{"line_number":147,"context_line":"        for host in self.hosts_details.keys():"},{"line_number":148,"context_line":"            available_set \u003d self._get_dedicated_cpu_set_of_host(host)"}],"source_content_type":"text/x-python","patch_set":17,"id":"37ab77e3_d3f06157","line":145,"in_reply_to":"a8f295db_154eb5d7","updated":"2024-04-17 02:33:03.000000000","message":"Acknowledged","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":186,"context_line":"        available_dedicated_vcpus \u003d \\"},{"line_number":187,"context_line":"            min(dedicated_cpus_per_host, key\u003dlambda x: len(x))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.dedicated_cpus_per_guest \u003d len(available_dedicated_vcpus) // 2"},{"line_number":190,"context_line":"        self.shared_vcpus_per_guest \u003d len(available_shared_vcpus) // 2"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_cpu_shared(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"05365277_746a206e","line":189,"updated":"2024-04-17 00:30:16.000000000","message":"Remind me, this means some tests boot 2 guests, right? Maybe a comment to help explain this...","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        available_dedicated_vcpus \u003d \\"},{"line_number":187,"context_line":"            min(dedicated_cpus_per_host, key\u003dlambda x: len(x))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.dedicated_cpus_per_guest \u003d len(available_dedicated_vcpus) // 2"},{"line_number":190,"context_line":"        self.shared_vcpus_per_guest \u003d len(available_shared_vcpus) // 2"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_cpu_shared(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"273c0268_ac703e1f","line":189,"in_reply_to":"05365277_746a206e","updated":"2024-04-17 02:33:03.000000000","message":"Yes correct it results in a size that will allow for 2 guests to use shared and/or dedicated sets from a host. I\u0027ll add a comment to clarify.","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def setUp(self):"},{"line_number":453,"context_line":"        super(EmulatorThreadTest, self).setUp()"},{"line_number":454,"context_line":"        self.hosts_details \u003d whitebox_utils.get_host_details()"},{"line_number":455,"context_line":"        self.shared_count_per_numa \u003d \\"},{"line_number":456,"context_line":"            self._get_shared_cpus_per_numa()"},{"line_number":457,"context_line":"        self.dedicated_count_per_numa \u003d \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"5e4e407e_374b1afd","line":454,"updated":"2024-04-17 00:30:16.000000000","message":"See my comment in utils.py :) My first thought when seeing this was - why is `hosts_details` pluraly obtained from `get_host_details` singular?","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def setUp(self):"},{"line_number":453,"context_line":"        super(EmulatorThreadTest, self).setUp()"},{"line_number":454,"context_line":"        self.hosts_details \u003d whitebox_utils.get_host_details()"},{"line_number":455,"context_line":"        self.shared_count_per_numa \u003d \\"},{"line_number":456,"context_line":"            self._get_shared_cpus_per_numa()"},{"line_number":457,"context_line":"        self.dedicated_count_per_numa \u003d \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"36584ce6_01f7d854","line":454,"in_reply_to":"5e4e407e_374b1afd","updated":"2024-04-17 02:33:03.000000000","message":"Yup its not super intuitive, I\u0027ll update to have a get all hosts method instead of what it is currently doing.","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4a82eb673ce152c40537f625ccbf549d9ec631e2","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        return hardware.parse_cpu_spec(cpu_set)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_shared_set_size(self):"},{"line_number":139,"context_line":"        gathered_lists \u003d [self._get_host_cpu_shared_set(host)"},{"line_number":140,"context_line":"                          for host in self.hosts_details.keys()]"},{"line_number":141,"context_line":"        return gathered_lists"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"069c9917_52a76918","line":139,"updated":"2024-04-22 20:25:51.000000000","message":"I means just have this list comprehension directly on L162.","commit_id":"9ffd0579a8a6030234e16ea9e2951dc6e83d7615"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"6bdbef7aeb3c5acd74fe42d36b95dfdf8b624015","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        return hardware.parse_cpu_spec(cpu_set)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _get_shared_set_size(self):"},{"line_number":139,"context_line":"        gathered_lists \u003d [self._get_host_cpu_shared_set(host)"},{"line_number":140,"context_line":"                          for host in self.hosts_details.keys()]"},{"line_number":141,"context_line":"        return gathered_lists"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"676d071d_6338e78d","line":139,"in_reply_to":"069c9917_52a76918","updated":"2024-04-22 20:37:57.000000000","message":"Acknowledged","commit_id":"9ffd0579a8a6030234e16ea9e2951dc6e83d7615"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4a82eb673ce152c40537f625ccbf549d9ec631e2","unresolved":true,"context_lines":[{"line_number":141,"context_line":"        return gathered_lists"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def _get_dedicated_set_size(self):"},{"line_number":144,"context_line":"        gathered_lists \u003d [self._get_host_cpu_dedicated_set(host)"},{"line_number":145,"context_line":"                          for host in self.hosts_details.keys()]"},{"line_number":146,"context_line":"        return gathered_lists"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"fda57677_bac8d56c","line":144,"updated":"2024-04-22 20:25:51.000000000","message":"Ditto for L175.","commit_id":"9ffd0579a8a6030234e16ea9e2951dc6e83d7615"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"6bdbef7aeb3c5acd74fe42d36b95dfdf8b624015","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        return gathered_lists"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def _get_dedicated_set_size(self):"},{"line_number":144,"context_line":"        gathered_lists \u003d [self._get_host_cpu_dedicated_set(host)"},{"line_number":145,"context_line":"                          for host in self.hosts_details.keys()]"},{"line_number":146,"context_line":"        return gathered_lists"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"e466d715_f71d093c","line":144,"in_reply_to":"fda57677_bac8d56c","updated":"2024-04-22 20:37:57.000000000","message":"Acknowledged","commit_id":"9ffd0579a8a6030234e16ea9e2951dc6e83d7615"}],"whitebox_tempest_plugin/utils.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"90756aec83adb4cbf7f280203fb36afe8b297503","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    raise exceptions.CtrlplaneAddressResolutionError(host\u003dcompute_hostname)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def get_host_details(host\u003dNone):"},{"line_number":78,"context_line":"    global _nodes"},{"line_number":79,"context_line":"    if _nodes is None:"},{"line_number":80,"context_line":"        nodes_location \u003d CONF.whitebox.nodes_yaml"}],"source_content_type":"text/x-python","patch_set":17,"id":"a2430684_b58234a4","line":77,"updated":"2024-04-17 00:30:16.000000000","message":"Using `host\u003dNone` to mean \"all hosts\" is super counter intuitive, especially since in `get_host_details` host is singular. I\u0027d rather you just add a separate `get_all_hosts_details()` method in here.","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"feb00404d11685403ec8ae86501463f2ab9172f0","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    raise exceptions.CtrlplaneAddressResolutionError(host\u003dcompute_hostname)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def get_host_details(host\u003dNone):"},{"line_number":78,"context_line":"    global _nodes"},{"line_number":79,"context_line":"    if _nodes is None:"},{"line_number":80,"context_line":"        nodes_location \u003d CONF.whitebox.nodes_yaml"}],"source_content_type":"text/x-python","patch_set":17,"id":"f282d642_09aaa90a","line":77,"in_reply_to":"a2430684_b58234a4","updated":"2024-04-17 02:33:03.000000000","message":"Acknowledged","commit_id":"496079055661a1a93cd7f35a5ec7fbd44790bb96"}]}
