)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7f266906106bb5ff9b67a8626cbcaea9c141f7e2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a new class, EmulatorExtraCPUTest which tests deploying an"},{"line_number":10,"context_line":"instance with a flavor that pins an emulator thread to its own dedicated"},{"line_number":11,"context_line":"pCPU.  The class introduces two test methods.  The first is"},{"line_number":12,"context_line":"test_emulator_pinning which is the happy path test for verifying the"},{"line_number":13,"context_line":"emulator thread is pinned on its on pCPU, seperate from the pCPU\u0027s"},{"line_number":14,"context_line":"utilized by the instances vCPUs.  The second test,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3fa7e38b_fb6dda2e","line":11,"range":{"start_line":11,"start_character":45,"end_line":11,"end_character":47},"updated":"2019-11-21 00:38:48.000000000","message":"Double space!","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7f266906106bb5ff9b67a8626cbcaea9c141f7e2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"instance with a flavor that pins an emulator thread to its own dedicated"},{"line_number":11,"context_line":"pCPU.  The class introduces two test methods.  The first is"},{"line_number":12,"context_line":"test_emulator_pinning which is the happy path test for verifying the"},{"line_number":13,"context_line":"emulator thread is pinned on its on pCPU, seperate from the pCPU\u0027s"},{"line_number":14,"context_line":"utilized by the instances vCPUs.  The second test,"},{"line_number":15,"context_line":"test_emulator_no_extra_cpu, is a negative test that attempts to deploy"},{"line_number":16,"context_line":"an instance with emulator thread pinning enabled and a dedicated cpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3fa7e38b_bb652247","line":13,"range":{"start_line":13,"start_character":42,"end_line":13,"end_character":50},"updated":"2019-11-21 00:38:48.000000000","message":"separate","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7f266906106bb5ff9b67a8626cbcaea9c141f7e2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"pCPU.  The class introduces two test methods.  The first is"},{"line_number":12,"context_line":"test_emulator_pinning which is the happy path test for verifying the"},{"line_number":13,"context_line":"emulator thread is pinned on its on pCPU, seperate from the pCPU\u0027s"},{"line_number":14,"context_line":"utilized by the instances vCPUs.  The second test,"},{"line_number":15,"context_line":"test_emulator_no_extra_cpu, is a negative test that attempts to deploy"},{"line_number":16,"context_line":"an instance with emulator thread pinning enabled and a dedicated cpu"},{"line_number":17,"context_line":"policy, but the size of the guest is larger than the avaialbe pCPUs on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3fa7e38b_5b566e60","line":14,"range":{"start_line":14,"start_character":32,"end_line":14,"end_character":34},"updated":"2019-11-21 00:38:48.000000000","message":"Double space!","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7f266906106bb5ff9b67a8626cbcaea9c141f7e2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"calculates the largest pCPU size with method _get_max_pcpus and builds"},{"line_number":20,"context_line":"flavors around the result."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"(overcloud) [stack@undercloud-0 tempest-dir]$  tempest run --regex"},{"line_number":23,"context_line":"whitebox_tempest_plugin.api.compute.test_cpu_pinning.EmulatorExtraCPUTest"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d Totals \u003d\u003d\u003d\u003d\u003d\u003d Ran: 2 tests in 29.0000 sec."},{"line_number":26,"context_line":" - Passed: 2"},{"line_number":27,"context_line":" - Skipped: 0"},{"line_number":28,"context_line":" - Expected Fail: 0"},{"line_number":29,"context_line":" - Unexpected Success: 0"},{"line_number":30,"context_line":" - Failed: 0 Sum of execute time for each test: 18.6598 sec."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Worker Balance \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":" - Worker 0 (2 tests) \u003d\u003e 0:00:18.660407"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Change-Id: If15891f3013ebd8100c77b173e9f573515220a57"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3fa7e38b_fb463aa7","line":33,"range":{"start_line":22,"start_character":0,"end_line":33,"end_character":39},"updated":"2019-11-21 00:38:48.000000000","message":"You don\u0027t need all this.","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"}],"whitebox_tempest_plugin/api/compute/test_cpu_pinning.py":[{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"30987a27d0b26c7d676555083213cac38b42adfc","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from whitebox_tempest_plugin.api.compute import base"},{"line_number":38,"context_line":"from whitebox_tempest_plugin import exceptions"},{"line_number":39,"context_line":"from whitebox_tempest_plugin.services import clients"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from oslo_log import log as logging"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_ccfef1ad","line":40,"updated":"2019-11-04 20:30:15.000000000","message":"extra blank line.\nSome minor nits acc to [1] pep8 styling guide\n\n[1] https://www.python.org/dev/peps/pep-0008/","commit_id":"401e3c3b6d1a9087bd4f565ffe1509e91aec263a"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"30987a27d0b26c7d676555083213cac38b42adfc","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class EmulatorExtraCPUTest(BasePinningTest):"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    iso_emul_thread \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":423,"context_line":"                       \u0027hw:emulator_threads_policy\u0027: \u0027isolate\u0027}"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_6c27bd64","line":421,"updated":"2019-11-04 20:30:15.000000000","message":"extra line","commit_id":"401e3c3b6d1a9087bd4f565ffe1509e91aec263a"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"30987a27d0b26c7d676555083213cac38b42adfc","unresolved":false,"context_lines":[{"line_number":463,"context_line":"            cpu_pinnings.isdisjoint(emul_thrds),"},{"line_number":464,"context_line":"            \u0027Cpu Pins: %s, overlap with emulator pins: %s\u0027 % (cpu_pinnings,"},{"line_number":465,"context_line":"                                                              emul_thrds))"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_emulator_no_extra_cpu(self):"},{"line_number":469,"context_line":"        \"\"\"Pinning emulator thread exceeds available pCPU capacity"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_8ca1d9ab","line":466,"updated":"2019-11-04 20:30:15.000000000","message":"extra line again","commit_id":"401e3c3b6d1a9087bd4f565ffe1509e91aec263a"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"30987a27d0b26c7d676555083213cac38b42adfc","unresolved":false,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def _get_cpu_spec(self, cpu_list):"},{"line_number":500,"context_line":"        \"\"\"Returns a libvirt-style CPU spec from the provided list of integers."},{"line_number":501,"context_line":"        For example, given [0, 2, 3], returns \"0,2,3\"."},{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":"        return \u0027,\u0027.join(map(str, cpu_list))"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4c5681d0","line":501,"updated":"2019-11-04 20:30:15.000000000","message":"indent below R","commit_id":"401e3c3b6d1a9087bd4f565ffe1509e91aec263a"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"40d013502842a9bfa15218157b8d74e7c45a31a8","unresolved":false,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def _get_cpu_spec(self, cpu_list):"},{"line_number":500,"context_line":"        \"\"\"Returns a libvirt-style CPU spec from the provided list of integers."},{"line_number":501,"context_line":"        For example, given [0, 2, 3], returns \"0,2,3\"."},{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":"        return \u0027,\u0027.join(map(str, cpu_list))"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_8c9559e6","line":501,"in_reply_to":"3fa7e38b_4c5681d0","updated":"2019-11-04 20:46:19.000000000","message":"missed this is a docstring, so this looks good :)","commit_id":"401e3c3b6d1a9087bd4f565ffe1509e91aec263a"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"9ca025a6722961ed937e2d0b2376917ebdb036ba","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from whitebox_tempest_plugin.api.compute import base"},{"line_number":38,"context_line":"from whitebox_tempest_plugin import exceptions"},{"line_number":39,"context_line":"from whitebox_tempest_plugin.services import clients"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from oslo_log import log as logging"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_ace055cd","line":40,"updated":"2019-11-04 20:45:17.000000000","message":"nit: extra blank line","commit_id":"60c6f19fa85aa572874d24d2578ec9c934fd7e47"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"9ca025a6722961ed937e2d0b2376917ebdb036ba","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class EmulatorExtraCPUTest(BasePinningTest):"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    iso_emul_thread \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":423,"context_line":"                       \u0027hw:emulator_threads_policy\u0027: \u0027isolate\u0027}"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_8c06b985","line":421,"updated":"2019-11-04 20:45:17.000000000","message":"nit: extra blank line","commit_id":"60c6f19fa85aa572874d24d2578ec9c934fd7e47"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"9ca025a6722961ed937e2d0b2376917ebdb036ba","unresolved":false,"context_lines":[{"line_number":443,"context_line":"            raise self.skipException(\u0027Need a minimum of 2 pCPUs to execute \u0027"},{"line_number":444,"context_line":"                                     \u0027emulator pinning test\u0027)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        vcpus \u003d max(int(max_cpus / 2), 1)"},{"line_number":447,"context_line":"        flavor_iso_emu \u003d self.create_flavor(vcpus\u003dvcpus,"},{"line_number":448,"context_line":"                                            extra_specs\u003dself.iso_emul_thread)"},{"line_number":449,"context_line":"        server \u003d self.create_test_server(flavor\u003dflavor_iso_emu[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_4cae8181","line":446,"range":{"start_line":446,"start_character":16,"end_line":446,"end_character":41},"updated":"2019-11-04 20:45:17.000000000","message":"nit: max(int(max_cpus/2), 1)","commit_id":"60c6f19fa85aa572874d24d2578ec9c934fd7e47"},{"author":{"_account_id":27478,"name":"Archit Modi","email":"amodi@redhat.com","username":"amodi"},"change_message_id":"e171529a59b07df00e6bbcf682d5213ff20f79f1","unresolved":false,"context_lines":[{"line_number":443,"context_line":"            raise self.skipException(\u0027Need a minimum of 2 pCPUs to execute \u0027"},{"line_number":444,"context_line":"                                     \u0027emulator pinning test\u0027)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        vcpus \u003d max(int(max_cpus / 2), 1)"},{"line_number":447,"context_line":"        flavor_iso_emu \u003d self.create_flavor(vcpus\u003dvcpus,"},{"line_number":448,"context_line":"                                            extra_specs\u003dself.iso_emul_thread)"},{"line_number":449,"context_line":"        server \u003d self.create_test_server(flavor\u003dflavor_iso_emu[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_47e3bad8","line":446,"range":{"start_line":446,"start_character":16,"end_line":446,"end_character":41},"in_reply_to":"3fa7e38b_4cae8181","updated":"2019-11-04 21:32:30.000000000","message":"ignore the nit","commit_id":"60c6f19fa85aa572874d24d2578ec9c934fd7e47"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7f266906106bb5ff9b67a8626cbcaea9c141f7e2","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def _get_cpu_spec(self, cpu_list):"},{"line_number":497,"context_line":"        \"\"\"Returns a libvirt-style CPU spec from the provided list of integers."},{"line_number":498,"context_line":"        For example, given [0, 2, 3], returns \"0,2,3\"."},{"line_number":499,"context_line":"        \"\"\""},{"line_number":500,"context_line":"        return \u0027,\u0027.join(map(str, cpu_list))"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_5bcbce1b","line":498,"range":{"start_line":498,"start_character":8,"end_line":498,"end_character":11},"updated":"2019-11-21 00:38:48.000000000","message":"Why?","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"03f3188abf2e0d6bf61ccd3fb9e28f556adbe302","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def _get_cpu_spec(self, cpu_list):"},{"line_number":497,"context_line":"        \"\"\"Returns a libvirt-style CPU spec from the provided list of integers."},{"line_number":498,"context_line":"        For example, given [0, 2, 3], returns \"0,2,3\"."},{"line_number":499,"context_line":"        \"\"\""},{"line_number":500,"context_line":"        return \u0027,\u0027.join(map(str, cpu_list))"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_166beb1e","line":498,"range":{"start_line":498,"start_character":8,"end_line":498,"end_character":11},"in_reply_to":"3fa7e38b_16f76bd6","updated":"2019-11-21 01:47:02.000000000","message":"Certainly!","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"19a57ee887a9341a84d6ce974d3a430493923f70","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def _get_cpu_spec(self, cpu_list):"},{"line_number":497,"context_line":"        \"\"\"Returns a libvirt-style CPU spec from the provided list of integers."},{"line_number":498,"context_line":"        For example, given [0, 2, 3], returns \"0,2,3\"."},{"line_number":499,"context_line":"        \"\"\""},{"line_number":500,"context_line":"        return \u0027,\u0027.join(map(str, cpu_list))"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_d644734a","line":498,"range":{"start_line":498,"start_character":8,"end_line":498,"end_character":11},"in_reply_to":"3fa7e38b_5bcbce1b","updated":"2019-11-21 01:15:00.000000000","message":"I just noticed it was exceeding 79 chars in my editor but I can change it back if it\u0027s not necessary to make the change.","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f9971221539186bda428b4d87962f99b53bdd24f","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def _get_cpu_spec(self, cpu_list):"},{"line_number":497,"context_line":"        \"\"\"Returns a libvirt-style CPU spec from the provided list of integers."},{"line_number":498,"context_line":"        For example, given [0, 2, 3], returns \"0,2,3\"."},{"line_number":499,"context_line":"        \"\"\""},{"line_number":500,"context_line":"        return \u0027,\u0027.join(map(str, cpu_list))"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_16f76bd6","line":498,"range":{"start_line":498,"start_character":8,"end_line":498,"end_character":11},"in_reply_to":"3fa7e38b_d644734a","updated":"2019-11-21 01:22:08.000000000","message":"Weird, I\u0027d have thought pep8 would have picked that up. Would you be willing to pander to my OCD and not include this in this patch?","commit_id":"aaca9443e10bb93d1fec09a0d5c3cf78db8c530b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b9e5d785fa61c21e7fdaf7bacf92acf8961d9c7a","unresolved":false,"context_lines":[{"line_number":428,"context_line":"    iso_emul_thread \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":429,"context_line":"                       \u0027hw:emulator_threads_policy\u0027: \u0027isolate\u0027}"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def _get_max_pcpus(self):"},{"line_number":432,"context_line":"        hvs \u003d self.get_all_hypervisors()"},{"line_number":433,"context_line":"        cpus_per_node \u003d []"},{"line_number":434,"context_line":"        for hv in hvs:"},{"line_number":435,"context_line":"            numa_client \u003d clients.NUMAClient(hv)"},{"line_number":436,"context_line":"            topo \u003d numa_client.get_host_topology()"},{"line_number":437,"context_line":"            cpus_per_node +\u003d [len(cpu_list) for cpu_list in topo.values()]"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        return max(cpus_per_node)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def test_emulator_pinning(self):"},{"line_number":442,"context_line":"        \"\"\"Create instance that pins emulator thread to pCPU."}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_a72dcefd","line":439,"range":{"start_line":431,"start_character":0,"end_line":439,"end_character":33},"updated":"2019-11-25 18:09:11.000000000","message":"The problem with doing it this way is that it ignores vcpu_pin_set, which affects how all of this works out. See [1 - scroll down to Emulator threads policy, there\u0027s a nice table there.\n\nTo further complicate things, with Train the behaviour of cpu_shared_set has changed with Stephen\u0027s CPU resources work [2].\n\nSo I think we might need 2 sets of tests for thread policies: 1 for pre-Train (realistically only Queens/OSP13, since that\u0027s what we care for at RH), and 1 for post-Train. How to make that happen though is up in the air.\n\n[1] https://docs.openstack.org/nova/latest/user/flavors.html\n[2] http://specs.openstack.org/openstack/nova-specs/specs/train/approved/cpu-resources.html#cpu-resources-upgrade","commit_id":"3dbb7afe42c57773d9ee56ab52d9bb4fe7ab49c7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"029f049d6f633d5087dadfac2c477dd7600dc8f8","unresolved":true,"context_lines":[{"line_number":425,"context_line":"        return whitebox_utils.parse_cpu_spec("},{"line_number":426,"context_line":"            config_client.get_conf_opt(\u0027compute\u0027, \u0027cpu_shared_set\u0027))"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def create_flavor(self, threads_policy\u003d\u0027share\u0027, vcpus\u003dNone):"},{"line_number":429,"context_line":"        if vcpus is None:"},{"line_number":430,"context_line":"            vcpus \u003d self.vcpus"},{"line_number":431,"context_line":"        flavor \u003d super(EmulatorExtraCPUTest,"}],"source_content_type":"text/x-python","patch_set":19,"id":"a048f323_2c7f14f0","line":428,"updated":"2021-02-08 18:27:24.000000000","message":"nit: I\u0027m not a fan of kwarg defaults for stuff like this. Better make it explicit, it\u0027s easier to read and understand.","commit_id":"7fd682fa646eaca0afdc6fb86dcae5c6537a1fab"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"c594ed6c6dc88be20ac87126dd46a1cf2577c417","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        return whitebox_utils.parse_cpu_spec("},{"line_number":426,"context_line":"            config_client.get_conf_opt(\u0027compute\u0027, \u0027cpu_shared_set\u0027))"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def create_flavor(self, threads_policy\u003d\u0027share\u0027, vcpus\u003dNone):"},{"line_number":429,"context_line":"        if vcpus is None:"},{"line_number":430,"context_line":"            vcpus \u003d self.vcpus"},{"line_number":431,"context_line":"        flavor \u003d super(EmulatorExtraCPUTest,"}],"source_content_type":"text/x-python","patch_set":19,"id":"f3aff320_efc12ebe","line":428,"in_reply_to":"a048f323_2c7f14f0","updated":"2021-02-08 18:40:48.000000000","message":"Done","commit_id":"7fd682fa646eaca0afdc6fb86dcae5c6537a1fab"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"029f049d6f633d5087dadfac2c477dd7600dc8f8","unresolved":true,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        return flavor"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    def create_shared_flavor(self, vcpus\u003dNone):"},{"line_number":443,"context_line":"        return self.create_flavor(vcpus\u003dvcpus)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def create_isolated_flavor(self, vcpus\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"cff93985_51c53170","line":442,"updated":"2021-02-08 18:27:24.000000000","message":"nit: do you really need this extra method? Why not just call create_flavor(threads_policy\u003d\u0027share\u0027, vcpu\u003d\u003cblah\u003e)?","commit_id":"7fd682fa646eaca0afdc6fb86dcae5c6537a1fab"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"c594ed6c6dc88be20ac87126dd46a1cf2577c417","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        return flavor"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    def create_shared_flavor(self, vcpus\u003dNone):"},{"line_number":443,"context_line":"        return self.create_flavor(vcpus\u003dvcpus)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def create_isolated_flavor(self, vcpus\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"b59e943d_448e55cf","line":442,"in_reply_to":"cff93985_51c53170","updated":"2021-02-08 18:40:48.000000000","message":"Done","commit_id":"7fd682fa646eaca0afdc6fb86dcae5c6537a1fab"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"029f049d6f633d5087dadfac2c477dd7600dc8f8","unresolved":true,"context_lines":[{"line_number":442,"context_line":"    def create_shared_flavor(self, vcpus\u003dNone):"},{"line_number":443,"context_line":"        return self.create_flavor(vcpus\u003dvcpus)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def create_isolated_flavor(self, vcpus\u003dNone):"},{"line_number":446,"context_line":"        return self.create_flavor(threads_policy\u003d\u0027isolate\u0027, vcpus\u003dvcpus)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def _get_cpu_configs(self, num_vcpu, num_shared, pcpu_list):"}],"source_content_type":"text/x-python","patch_set":19,"id":"a53d1116_46ad8527","line":445,"updated":"2021-02-08 18:27:24.000000000","message":"Ditto","commit_id":"7fd682fa646eaca0afdc6fb86dcae5c6537a1fab"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"c594ed6c6dc88be20ac87126dd46a1cf2577c417","unresolved":false,"context_lines":[{"line_number":442,"context_line":"    def create_shared_flavor(self, vcpus\u003dNone):"},{"line_number":443,"context_line":"        return self.create_flavor(vcpus\u003dvcpus)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def create_isolated_flavor(self, vcpus\u003dNone):"},{"line_number":446,"context_line":"        return self.create_flavor(threads_policy\u003d\u0027isolate\u0027, vcpus\u003dvcpus)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def _get_cpu_configs(self, num_vcpu, num_shared, pcpu_list):"}],"source_content_type":"text/x-python","patch_set":19,"id":"c0a37d58_53175a80","line":445,"in_reply_to":"a53d1116_46ad8527","updated":"2021-02-08 18:40:48.000000000","message":"Done","commit_id":"7fd682fa646eaca0afdc6fb86dcae5c6537a1fab"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8f741ebd241148cbdda67eafc8185b82e9e404fd","unresolved":true,"context_lines":[{"line_number":452,"context_line":"        dedicated_set \u003d self._get_cpu_spec("},{"line_number":453,"context_line":"            CONF.whitebox_hardware.cpu_topology[self.numa_to_use][:2])"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # If single_shared_cpu is True restrict the cpu_shared_set to a single"},{"line_number":456,"context_line":"        # pCPU otherwise use a range of pCPUs"},{"line_number":457,"context_line":"        if single_shared_cpu:"},{"line_number":458,"context_line":"            cpu_shared_set_str \u003d self._get_cpu_spec("}],"source_content_type":"text/x-python","patch_set":20,"id":"0ce3c4fc_649cb66e","line":455,"updated":"2021-02-11 22:42:28.000000000","message":"This tests a specific bug with cpu_shared_set as a range/single item, right? It\u0027d be good to mention that here, ideally linking the Launchpad, but the Bugzilla (if it\u0027s public) could work as well.\n\n\u003clater\u003e Or actually, maybe mention that on the actualy test methods lower down.","commit_id":"87d69bf8a65e0653b01c6c88fa2701307e4786bc"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"8ef39d11dc729e4e616a926d405f3ca7deff61ca","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        dedicated_set \u003d self._get_cpu_spec("},{"line_number":453,"context_line":"            CONF.whitebox_hardware.cpu_topology[self.numa_to_use][:2])"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # If single_shared_cpu is True restrict the cpu_shared_set to a single"},{"line_number":456,"context_line":"        # pCPU otherwise use a range of pCPUs"},{"line_number":457,"context_line":"        if single_shared_cpu:"},{"line_number":458,"context_line":"            cpu_shared_set_str \u003d self._get_cpu_spec("}],"source_content_type":"text/x-python","patch_set":20,"id":"d45a8e1a_1999faca","line":455,"in_reply_to":"0ce3c4fc_649cb66e","updated":"2021-02-11 23:19:59.000000000","message":"Agreed I can add the launchpad link (https://blueprints.launchpad.net/nova/+spec/overhead-pin-set) for this in the test methods.","commit_id":"87d69bf8a65e0653b01c6c88fa2701307e4786bc"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8f741ebd241148cbdda67eafc8185b82e9e404fd","unresolved":true,"context_lines":[{"line_number":558,"context_line":"            # Validate emulator threads for server\u0027s A and B are subsets of"},{"line_number":559,"context_line":"            # the pinned CPUs found on server\u0027s A and B"},{"line_number":560,"context_line":"            self.assertTrue("},{"line_number":561,"context_line":"                emulator_threads_a.issubset(cpu_pins_a),"},{"line_number":562,"context_line":"                \u0027Threads %s not a subset of CPU pins %s\u0027 % (emulator_threads_a,"},{"line_number":563,"context_line":"                                                            cpu_pins_a))"},{"line_number":564,"context_line":"            self.assertTrue("}],"source_content_type":"text/x-python","patch_set":20,"id":"76ce00e6_75766da7","line":561,"range":{"start_line":561,"start_character":35,"end_line":561,"end_character":43},"updated":"2021-02-11 22:42:28.000000000","message":"It should be more than issubset, no? They should be identical...","commit_id":"87d69bf8a65e0653b01c6c88fa2701307e4786bc"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"8ef39d11dc729e4e616a926d405f3ca7deff61ca","unresolved":false,"context_lines":[{"line_number":558,"context_line":"            # Validate emulator threads for server\u0027s A and B are subsets of"},{"line_number":559,"context_line":"            # the pinned CPUs found on server\u0027s A and B"},{"line_number":560,"context_line":"            self.assertTrue("},{"line_number":561,"context_line":"                emulator_threads_a.issubset(cpu_pins_a),"},{"line_number":562,"context_line":"                \u0027Threads %s not a subset of CPU pins %s\u0027 % (emulator_threads_a,"},{"line_number":563,"context_line":"                                                            cpu_pins_a))"},{"line_number":564,"context_line":"            self.assertTrue("}],"source_content_type":"text/x-python","patch_set":20,"id":"c911c17e_69004d9e","line":561,"range":{"start_line":561,"start_character":35,"end_line":561,"end_character":43},"in_reply_to":"76ce00e6_75766da7","updated":"2021-02-11 23:19:59.000000000","message":"Correct they should be pinned to all of the instance\u0027s pCPUs, will change these two.","commit_id":"87d69bf8a65e0653b01c6c88fa2701307e4786bc"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8f741ebd241148cbdda67eafc8185b82e9e404fd","unresolved":true,"context_lines":[{"line_number":679,"context_line":"            # Create a flavor that would require more pCPUs than what is"},{"line_number":680,"context_line":"            # available from the host\u0027s cpu_dedicated_set"},{"line_number":681,"context_line":"            flavor \u003d self.create_flavor(threads_policy\u003d\u0027isolate\u0027,"},{"line_number":682,"context_line":"                                        vcpus\u003dself.vcpus + 1)"},{"line_number":683,"context_line":"            # Confirm the instance cannot be built"},{"line_number":684,"context_line":"            self.assertRaises(BuildErrorException,"},{"line_number":685,"context_line":"                              self.create_test_server,"}],"source_content_type":"text/x-python","patch_set":20,"id":"09ff1d02_59bc59cd","line":682,"range":{"start_line":682,"start_character":46,"end_line":682,"end_character":56},"updated":"2021-02-11 22:42:28.000000000","message":"Shouldn\u0027t this be the number of CPUs in cpu_dedicated_set? So that if the policy wasn\u0027t isolate, it would foot and the emulator threads would float over the instance PCPUs, bug with policy isolate we\u0027d need at least 1 more CPU in cpu_dedicated_set, which we don\u0027t have, and it fails.","commit_id":"87d69bf8a65e0653b01c6c88fa2701307e4786bc"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"8ef39d11dc729e4e616a926d405f3ca7deff61ca","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            # Create a flavor that would require more pCPUs than what is"},{"line_number":680,"context_line":"            # available from the host\u0027s cpu_dedicated_set"},{"line_number":681,"context_line":"            flavor \u003d self.create_flavor(threads_policy\u003d\u0027isolate\u0027,"},{"line_number":682,"context_line":"                                        vcpus\u003dself.vcpus + 1)"},{"line_number":683,"context_line":"            # Confirm the instance cannot be built"},{"line_number":684,"context_line":"            self.assertRaises(BuildErrorException,"},{"line_number":685,"context_line":"                              self.create_test_server,"}],"source_content_type":"text/x-python","patch_set":20,"id":"4045e862_976dcfbb","line":682,"range":{"start_line":682,"start_character":46,"end_line":682,"end_character":56},"in_reply_to":"09ff1d02_59bc59cd","updated":"2021-02-11 23:19:59.000000000","message":"Yes its much cleaner to make it the length of cpu_dedicated_set","commit_id":"87d69bf8a65e0653b01c6c88fa2701307e4786bc"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d36c6d0165603ca14bdc56405e07c65d8eeed675","unresolved":true,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def setUp(self):"},{"line_number":376,"context_line":"        super(EmulatorExtraCPUTest, self).setUp()"},{"line_number":377,"context_line":"        self.placement_client \u003d self.os_admin.placement_client"},{"line_number":378,"context_line":"        # Iterate over cpu_topology and find the NUMA Node with the most"},{"line_number":379,"context_line":"        # pCPUs and set that as the NUMA Node to use throughout the test"},{"line_number":380,"context_line":"        largest_numa_node \u003d max(CONF.whitebox_hardware.cpu_topology.items(),"}],"source_content_type":"text/x-python","patch_set":21,"id":"0a16dc7e_b0c8986d","line":377,"updated":"2021-02-15 22:34:16.000000000","message":"nit: you\u0027re never actually using this","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4071978694fa7f47cae0aa7ac2f352c7e6323382","unresolved":false,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def setUp(self):"},{"line_number":376,"context_line":"        super(EmulatorExtraCPUTest, self).setUp()"},{"line_number":377,"context_line":"        self.placement_client \u003d self.os_admin.placement_client"},{"line_number":378,"context_line":"        # Iterate over cpu_topology and find the NUMA Node with the most"},{"line_number":379,"context_line":"        # pCPUs and set that as the NUMA Node to use throughout the test"},{"line_number":380,"context_line":"        largest_numa_node \u003d max(CONF.whitebox_hardware.cpu_topology.items(),"}],"source_content_type":"text/x-python","patch_set":21,"id":"92b2e599_8c4f5e13","line":377,"in_reply_to":"0a16dc7e_b0c8986d","updated":"2021-02-15 22:53:42.000000000","message":"Ack","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d36c6d0165603ca14bdc56405e07c65d8eeed675","unresolved":true,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        return emulator_threads"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def get_host_cpu_shared_set(self, server_id):"},{"line_number":423,"context_line":"        \"\"\"Get the value of the cpu_shared_set config option."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        :param server_id: Look on the compute host of this instance UUID."}],"source_content_type":"text/x-python","patch_set":21,"id":"6b2103a3_c5b5ca2d","line":422,"updated":"2021-02-15 22:34:16.000000000","message":"You\u0027re never actually using this method.","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4071978694fa7f47cae0aa7ac2f352c7e6323382","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        return emulator_threads"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def get_host_cpu_shared_set(self, server_id):"},{"line_number":423,"context_line":"        \"\"\"Get the value of the cpu_shared_set config option."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        :param server_id: Look on the compute host of this instance UUID."}],"source_content_type":"text/x-python","patch_set":21,"id":"9abb977c_371bf16d","line":422,"in_reply_to":"6b2103a3_c5b5ca2d","updated":"2021-02-15 22:53:42.000000000","message":"Ack","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4198893c168b7242ba9a672eb40855e1a800a789","unresolved":true,"context_lines":[{"line_number":446,"context_line":"        :param single_shared_cpu bool, wheter to use a single pCPU for the"},{"line_number":447,"context_line":"        shared set or a range of pCPUs for the shared_set range."},{"line_number":448,"context_line":"        \"\"\""},{"line_number":449,"context_line":"        if len(CONF.whitebox_hardware.cpu_topology[self.numa_to_use]) \u003c 2:"},{"line_number":450,"context_line":"            raise self.skipException(\u0027Test requires NUMA Node with 2 or more \u0027"},{"line_number":451,"context_line":"                                     \u0027CPUs to run\u0027)"},{"line_number":452,"context_line":"        dedicated_set \u003d self._get_cpu_spec("}],"source_content_type":"text/x-python","patch_set":21,"id":"3bff39d1_0083abb4","line":449,"range":{"start_line":449,"start_character":72,"end_line":449,"end_character":73},"updated":"2021-02-15 22:49:02.000000000","message":"This should be 3, no? At least based on the indices you\u0027re using on L463 and L466...","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4071978694fa7f47cae0aa7ac2f352c7e6323382","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        :param single_shared_cpu bool, wheter to use a single pCPU for the"},{"line_number":447,"context_line":"        shared set or a range of pCPUs for the shared_set range."},{"line_number":448,"context_line":"        \"\"\""},{"line_number":449,"context_line":"        if len(CONF.whitebox_hardware.cpu_topology[self.numa_to_use]) \u003c 2:"},{"line_number":450,"context_line":"            raise self.skipException(\u0027Test requires NUMA Node with 2 or more \u0027"},{"line_number":451,"context_line":"                                     \u0027CPUs to run\u0027)"},{"line_number":452,"context_line":"        dedicated_set \u003d self._get_cpu_spec("}],"source_content_type":"text/x-python","patch_set":21,"id":"ecacc040_d73a0f06","line":449,"range":{"start_line":449,"start_character":72,"end_line":449,"end_character":73},"in_reply_to":"3bff39d1_0083abb4","updated":"2021-02-15 22:53:42.000000000","message":"Ack","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d36c6d0165603ca14bdc56405e07c65d8eeed675","unresolved":true,"context_lines":[{"line_number":455,"context_line":"        # If single_shared_cpu is True restrict the cpu_shared_set to a single"},{"line_number":456,"context_line":"        # pCPU otherwise use a range of pCPUs."},{"line_number":457,"context_line":"        # NOTE: this scenario is based around BP:"},{"line_number":458,"context_line":"        # https://blueprints.launchpad.net/nova/+spec/overhead-pin-set where"},{"line_number":459,"context_line":"        # operators were requesting the option to have multiple guests share"},{"line_number":460,"context_line":"        # the same pCPU for their emulator thread or use a range of pCPU\u0027s"},{"line_number":461,"context_line":"        if single_shared_cpu:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a0e0ea1_79ea2215","line":458,"range":{"start_line":458,"start_character":10,"end_line":458,"end_character":70},"updated":"2021-02-15 22:34:16.000000000","message":"This is a super old blueprint. Was there a more recent (downstream if it has to be) bug related to buggy handling of single shared CPU vs multiple?","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4071978694fa7f47cae0aa7ac2f352c7e6323382","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        # If single_shared_cpu is True restrict the cpu_shared_set to a single"},{"line_number":456,"context_line":"        # pCPU otherwise use a range of pCPUs."},{"line_number":457,"context_line":"        # NOTE: this scenario is based around BP:"},{"line_number":458,"context_line":"        # https://blueprints.launchpad.net/nova/+spec/overhead-pin-set where"},{"line_number":459,"context_line":"        # operators were requesting the option to have multiple guests share"},{"line_number":460,"context_line":"        # the same pCPU for their emulator thread or use a range of pCPU\u0027s"},{"line_number":461,"context_line":"        if single_shared_cpu:"}],"source_content_type":"text/x-python","patch_set":21,"id":"4f37874b_3a2c2ea0","line":458,"range":{"start_line":458,"start_character":10,"end_line":458,"end_character":70},"in_reply_to":"9a0e0ea1_79ea2215","updated":"2021-02-15 22:53:42.000000000","message":"Here is the BZ detailing the requirements but based on #L466 will be dropping this approach to just test range: https://bugzilla.redhat.com/show_bug.cgi?id\u003d1468004#c0","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d36c6d0165603ca14bdc56405e07c65d8eeed675","unresolved":true,"context_lines":[{"line_number":463,"context_line":"                CONF.whitebox_hardware.cpu_topology[self.numa_to_use][2:3])"},{"line_number":464,"context_line":"        else:"},{"line_number":465,"context_line":"            cpu_shared_set_str \u003d self._get_cpu_spec("},{"line_number":466,"context_line":"                CONF.whitebox_hardware.cpu_topology[self.numa_to_use][2:])"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        hostname \u003d self.list_compute_hosts()[0]"},{"line_number":469,"context_line":"        host_sm \u003d clients.NovaServiceManager("}],"source_content_type":"text/x-python","patch_set":21,"id":"e1347874_ffffb74e","line":466,"updated":"2021-02-15 22:34:16.000000000","message":"If your NUMA node has 3 CPUs, this line is effectively the same as L463.\n\nHow much value does this kind of test add? Like, has there ever been a bug where cpu_shared_set being something like \u00271-4\u0027 or \u00277,8,10\u0027 didn\u0027t work but a single CPU like \u00273\u0027 worked?","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4071978694fa7f47cae0aa7ac2f352c7e6323382","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                CONF.whitebox_hardware.cpu_topology[self.numa_to_use][2:3])"},{"line_number":464,"context_line":"        else:"},{"line_number":465,"context_line":"            cpu_shared_set_str \u003d self._get_cpu_spec("},{"line_number":466,"context_line":"                CONF.whitebox_hardware.cpu_topology[self.numa_to_use][2:])"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        hostname \u003d self.list_compute_hosts()[0]"},{"line_number":469,"context_line":"        host_sm \u003d clients.NovaServiceManager("}],"source_content_type":"text/x-python","patch_set":21,"id":"fb55d0be_45bd544a","line":466,"in_reply_to":"e1347874_ffffb74e","updated":"2021-02-15 22:53:42.000000000","message":"The BZ indicated requesting 1 cpu, but as discussed in irc I think it would make sense to drop it and simply check for range of shared.","commit_id":"a2ce1f318b37678343a5021ff9d770520044728e"}]}
