)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a019ad6caa4b6704df69ea9782ebc9a6f5a76038","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"59ef027b_aad3f7fd","updated":"2022-12-20 20:23:37.000000000","message":"recheck retry weirdo limit due to file names","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"37a1886c7be0e2ebc260574979837fddaee7975d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0c69b5b1_3dcc04b9","updated":"2023-02-07 10:39:57.000000000","message":"recheck bug 1946339","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"491af0732104e1f5a61f694bce0b2fa4af384808","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"900e5c38_6d640c7c","updated":"2023-02-06 15:54:41.000000000","message":"recheck read timeout on n-api","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7441cb1a_96d8eff6","updated":"2023-02-09 17:07:45.000000000","message":"Damn shit, forgot some right sequencing https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_9f3/868237/10/check/nova-tox-functional-py39/9f34568/testr_results.html","commit_id":"26b05a10474c3df63c4b4e9659d864821e156e40"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7f7e7fd7_6e46b1a4","updated":"2023-02-09 18:10:53.000000000","message":"I have couple of small things but I much like the non tar.gz based test fixture.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dc5e0912_d2a47245","updated":"2023-02-10 09:52:11.000000000","message":"im mostly happy with this some style nits for the tests and docs but overall i think this is lookging good.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a4a6edc72e235dfb14577ba62dc4f699c3fc033","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b6816ec7_e27914da","updated":"2023-02-10 12:32:00.000000000","message":"i dont see anything that could not be addressed in a followup so i think we can proceed with this.\n\nif rebases are needed ectra feel free to proxy my +2 while im on PTO\n\nAs agreed on IRC a Docs patch will follow to explain how to use this feature beyond the docs provided in teh config options and release note.","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b0eb983b549190720244da5a26bda231417b05c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1e1b4ec9_e7b2b87d","updated":"2023-02-14 08:57:59.000000000","message":"recheck ceph job is non voting","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ad654e1ac47d2d706dc1f1cb4ee1626cd2f2da0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c5237a85_8790fcf3","updated":"2023-02-14 08:58:22.000000000","message":"recheck ceph job is non voting","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca8bbd1c0329c7bcfe5f95328fe5a247beec2d15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5e3aac21_e75e6141","updated":"2023-02-14 12:45:18.000000000","message":"recheck live migration pre-check failed\n\ntempest.api.compute.admin.test_live_migration.LiveMigrationTest.test_volume_backed_live_migration[id-5071cf17-3004-4257-ae61-73a84e28badd,volume]\n-------------------------------------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n\n      File \"/opt/stack/tempest/tempest/common/utils/__init__.py\", line 70, in wrapper\n    return f(*func_args, **func_kwargs)\n\n      File \"/opt/stack/tempest/tempest/api/compute/admin/test_live_migration.py\", line 168, in test_volume_backed_live_migration\n    self._test_live_migration(volume_backed\u003dTrue)\n\n      File \"/opt/stack/tempest/tempest/api/compute/admin/test_live_migration.py\", line 135, in _test_live_migration\n    self._live_migrate(server_id, destination_host, state, volume_backed)\n\n      File \"/opt/stack/tempest/tempest/api/compute/admin/test_live_migration.py\", line 79, in _live_migrate\n    self._migrate_server_to(server_id, target_host, volume_backed)\n\n      File \"/opt/stack/tempest/tempest/api/compute/admin/test_live_migration.py\", line 69, in _migrate_server_to\n    self.admin_servers_client.live_migrate_server(\n\n      File \"/opt/stack/tempest/tempest/lib/services/compute/servers_client.py\", line 538, in live_migrate_server\n    return self.action(server_id, \u0027os-migrateLive\u0027, **kwargs)\n\n      File \"/opt/stack/tempest/tempest/lib/services/compute/servers_client.py\", line 225, in action\n    resp, body \u003d self.post(\u0027servers/%s/action\u0027 % server_id,\n\n      File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 300, in post\n    return self.request(\u0027POST\u0027, url, extra_headers, headers, body, chunked)\n\n      File \"/opt/stack/tempest/tempest/lib/services/compute/base_compute_client.py\", line 47, in request\n    resp, resp_body \u003d super(BaseComputeClient, self).request(\n\n      File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 742, in request\n    self._error_checker(resp, resp_body)\n\n      File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 857, in _error_checker\n    raise exceptions.BadRequest(resp_body, resp\u003dresp)\n\n    tempest.lib.exceptions.BadRequest: Bad request\nDetails: {\u0027code\u0027: 400, \u0027message\u0027: \u0027Migration pre-check error: Binding failed for port 5edd22d1-ccbf-405e-b8f1-f21d061dce03, please check neutron logs for more information.\u0027}","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a47313f5b4789c5f58ac5678f53863fb266e0859","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b88ebd61_6c0c9e27","updated":"2023-02-15 08:36:05.000000000","message":"recheck parent merge failed.","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13e8c8923854783ba018eaf3c3f2580739c0a274","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"708e73d0_c6461e98","updated":"2023-02-18 08:26:36.000000000","message":"recheck queuing it up behind its parent","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"13f13c3f05a2431d92fa77f5fc74d8e6d1e21cc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a6923f85_77f68331","updated":"2023-02-14 15:43:17.000000000","message":"recheck sqlite failed to write instance info cache","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4c3e5b1f10569f8451f2d2d1b647046cb7bb43ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"08222fb9_3cd15f9a","updated":"2023-02-11 02:10:11.000000000","message":"recheck timeout","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"}],"nova/tests/fixtures/filesystem.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _setUp(self):"},{"line_number":31,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":32,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":33,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"25761295_a524cddc","line":31,"updated":"2023-02-09 18:10:53.000000000","message":"Why we need this if?","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _setUp(self):"},{"line_number":31,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":32,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":33,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"de94cea0_e135e602","line":31,"in_reply_to":"25761295_a524cddc","updated":"2023-02-10 12:02:13.000000000","message":"Yeah, given _setUp we\u0027re sure we don\u0027t have temp_dir","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _setUp(self):"},{"line_number":31,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":32,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":33,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class SysFileSystemFixture(TempFileSystemFixture):"}],"source_content_type":"text/x-python","patch_set":11,"id":"d87e4659_4ede6d6a","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":77},"updated":"2023-02-09 18:10:53.000000000","message":"I think `TemporaryDirectory` implementes cleanup() automatically so we don\u0027t need to depend on shutils.rmtree.\n\n\n```\nPython 3.10.9 (main, Dec  7 2022, 13:47:07) [GCC 12.2.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import templfile\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nModuleNotFoundError: No module named \u0027templfile\u0027\n\u003e\u003e\u003e import tempfile\n\u003e\u003e\u003e tmp_d \u003d tempfile.TemporaryDirectory(prefix\u003d\"fake_fs\", ignore_cleanup_errors\u003dTrue)\n\u003e\u003e\u003e tmp_d\n\u003cTemporaryDirectory \u0027/tmp/fake_fsb1xsqu9i\u0027\u003e\n\u003e\u003e\u003e tmp_d.cleanup()\n\u003e\u003e\u003e \n```\n\n\nhttps://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectory","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _setUp(self):"},{"line_number":31,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":32,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":33,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class SysFileSystemFixture(TempFileSystemFixture):"}],"source_content_type":"text/x-python","patch_set":11,"id":"a825d93b_07f525f1","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":77},"in_reply_to":"12c4a4be_854569d8","updated":"2023-02-10 12:02:13.000000000","message":"I just tested on my local py38 env, and unfortunately, ignore_cleanup_errors isn\u0027t supported yet)\n\n Python 3.8.16 (default, Dec  7 2022, 00:00:00) \n [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] on linux\n Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n \u003e\u003e\u003e import tempfile\n \u003e\u003e\u003e tmp_d \u003d tempfile.TemporaryDirectory(prefix\u003d\"fake_fs\",    ignore_cleanup_errors\u003dTrue)\n Traceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n TypeError: __init__() got an unexpected keyword argument \u0027ignore_cleanup_errors\u0027\n \n\nBut meh, let\u0027s not overthink about it, I\u0027ll just add a comment explaining what to do if we see unexpected problems in CI.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _setUp(self):"},{"line_number":31,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":32,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":33,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class SysFileSystemFixture(TempFileSystemFixture):"}],"source_content_type":"text/x-python","patch_set":11,"id":"12c4a4be_854569d8","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":77},"in_reply_to":"d87e4659_4ede6d6a","updated":"2023-02-10 09:52:11.000000000","message":"ok ya thats a highlevel wrapper to do the same thing. that proably makes sense to used instead however ignore_cleanup_errors is only in py 3.10 so we cant pass that.\n\nim not sure if cleanup can accept it.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, cpus_supported\u003dNone):"},{"line_number":43,"context_line":"        if cpus_supported:"},{"line_number":44,"context_line":"            self.CPUS_SUPPORTED \u003d cpus_supported"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _setUp(self):"},{"line_number":47,"context_line":"        super()._setUp()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5eda565d_86337540","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":31},"updated":"2023-02-09 18:10:53.000000000","message":"I\u0027m not sure this needs to be all caps","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, cpus_supported\u003dNone):"},{"line_number":43,"context_line":"        if cpus_supported:"},{"line_number":44,"context_line":"            self.CPUS_SUPPORTED \u003d cpus_supported"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _setUp(self):"},{"line_number":47,"context_line":"        super()._setUp()"}],"source_content_type":"text/x-python","patch_set":11,"id":"85c4b49b_19d9784f","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":31},"in_reply_to":"5eda565d_86337540","updated":"2023-02-10 09:52:11.000000000","message":"i would prefer it not to be \ni prefer to use all capps for constants or globals","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, cpus_supported\u003dNone):"},{"line_number":43,"context_line":"        if cpus_supported:"},{"line_number":44,"context_line":"            self.CPUS_SUPPORTED \u003d cpus_supported"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _setUp(self):"},{"line_number":47,"context_line":"        super()._setUp()"}],"source_content_type":"text/x-python","patch_set":11,"id":"d23df237_56e02171","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":31},"in_reply_to":"85c4b49b_19d9784f","updated":"2023-02-10 12:02:13.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        for cpu_nr in range(self.CPUS_SUPPORTED):"},{"line_number":74,"context_line":"            cpu_dir \u003d os.path.join(self.cpu_path_mock % {\u0027core\u0027: cpu_nr})"},{"line_number":75,"context_line":"            os.makedirs(cpu_dir)"},{"line_number":76,"context_line":"            os.mkdir(os.path.join(cpu_dir, \u0027cpufreq\u0027))"},{"line_number":77,"context_line":"            filesystem.write_sys("},{"line_number":78,"context_line":"                os.path.join(cpu_dir, \u0027cpufreq/scaling_governor\u0027),"},{"line_number":79,"context_line":"                data\u003d\u0027powersave\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"6a8524fc_d917cf14","line":76,"range":{"start_line":75,"start_character":0,"end_line":76,"end_character":54},"updated":"2023-02-09 18:10:53.000000000","message":"this can be one call\n```\nos.makedirs(os.path.join(cpu_dir, \u0027cpufreq\u0027))\n```","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        for cpu_nr in range(self.CPUS_SUPPORTED):"},{"line_number":74,"context_line":"            cpu_dir \u003d os.path.join(self.cpu_path_mock % {\u0027core\u0027: cpu_nr})"},{"line_number":75,"context_line":"            os.makedirs(cpu_dir)"},{"line_number":76,"context_line":"            os.mkdir(os.path.join(cpu_dir, \u0027cpufreq\u0027))"},{"line_number":77,"context_line":"            filesystem.write_sys("},{"line_number":78,"context_line":"                os.path.join(cpu_dir, \u0027cpufreq/scaling_governor\u0027),"},{"line_number":79,"context_line":"                data\u003d\u0027powersave\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"baaa84cd_1e11207d","line":76,"range":{"start_line":75,"start_character":0,"end_line":76,"end_character":54},"in_reply_to":"6a8524fc_d917cf14","updated":"2023-02-10 12:02:13.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4fa2dee81f43f07a10d42034549472b600e415ec","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _setUp(self):"},{"line_number":31,"context_line":"        self.temp_dir \u003d tempfile.TemporaryDirectory(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":32,"context_line":"        # NOTE(sbauza): I/O disk errors may raise an exception here, as we"},{"line_number":33,"context_line":"        # don\u0027t ignore them. If that\u0027s causing a problem in our CI jobs, the"},{"line_number":34,"context_line":"        # recommended solution is to use shutil.rmtree instead of cleanup()"},{"line_number":35,"context_line":"        # with ignore_errors parameter set to True (or wait for the minimum"}],"source_content_type":"text/x-python","patch_set":12,"id":"62284e02_ae60eca0","line":32,"range":{"start_line":32,"start_character":63,"end_line":32,"end_character":67},"updated":"2023-02-10 13:35:53.000000000","message":"nit: it won\u0027t be raised here but it will be raised during cleanup. But it is close enough.","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"}],"nova/tests/functional/libvirt/test_power_manage.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"801fa29bec0462b8e74cef94c7c5c611db87c6f8","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        for i in range(10):"},{"line_number":103,"context_line":"            core \u003d nova.virt.libvirt.cpu.Core(i)"},{"line_number":104,"context_line":"            core.online \u003d False"},{"line_number":105,"context_line":"            self.assertFalse(core.online)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        extra_spec \u003d {"},{"line_number":108,"context_line":"            \u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"f460db74_29f2f7a0","line":105,"updated":"2023-01-24 00:36:32.000000000","message":"maybe its goood to call out here that core.online\u003dfalse is asigning to the property on teh Core class which is going to do a write to the sysfs using the fake sysfs filestyem form the fixture. similarly the self.assertFalse  of core.online is reading form that file system\n\nso this is not just setting a vairble in memory\n\na comment to that effect or perhaps calling get_online(i) nova.virt.libvirt.cpu.core would make it clearer that this is actully asserting that the core has been turned off\n\nin anycase this loop is just ensuring the cores are initally off.\n\nthis should be doen automaticlaly as part fo init_host by the way so maybe this should be removed.\nstart_compute should have already done this.","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e271b02dacb764fe738ecae9963cd59b9f607f64","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        for i in range(10):"},{"line_number":103,"context_line":"            core \u003d nova.virt.libvirt.cpu.Core(i)"},{"line_number":104,"context_line":"            core.online \u003d False"},{"line_number":105,"context_line":"            self.assertFalse(core.online)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        extra_spec \u003d {"},{"line_number":108,"context_line":"            \u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"12efb345_0fd94e4c","line":105,"in_reply_to":"f460db74_29f2f7a0","updated":"2023-02-01 18:21:50.000000000","message":"1/ This WIP revision wasn\u0027t yet automatically doing the CPU shutdown at startup, I just added it for the next rev, so core.online \u003d False won\u0027t be needed.\n\n2/ I\u0027ll add more comments explaining that.","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"801fa29bec0462b8e74cef94c7c5c611db87c6f8","unresolved":true,"context_lines":[{"line_number":114,"context_line":"            flavor_id\u003dflavor_id,"},{"line_number":115,"context_line":"            expected_state\u003d\u0027ACTIVE\u0027)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        for i in range(5):"},{"line_number":118,"context_line":"            core \u003d nova.virt.libvirt.cpu.Core(i)"},{"line_number":119,"context_line":"            self.assertTrue(core.online)"},{"line_number":120,"context_line":"        for i in range(5, 10):"}],"source_content_type":"text/x-python","patch_set":2,"id":"134b4060_75ecde88","line":117,"updated":"2023-01-24 00:36:32.000000000","message":"ok so here you are later asserting that only the cpus for the server are enabled.\n\nthis is asssuming the first 5 cpus will be chosne.\n\nin this case you are proably correct that this is sable but it might be better to get the cores for then instance numa toplogy blob and check thoses specificaly.\n\nthat is more generically correct","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e271b02dacb764fe738ecae9963cd59b9f607f64","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            flavor_id\u003dflavor_id,"},{"line_number":115,"context_line":"            expected_state\u003d\u0027ACTIVE\u0027)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        for i in range(5):"},{"line_number":118,"context_line":"            core \u003d nova.virt.libvirt.cpu.Core(i)"},{"line_number":119,"context_line":"            self.assertTrue(core.online)"},{"line_number":120,"context_line":"        for i in range(5, 10):"}],"source_content_type":"text/x-python","patch_set":2,"id":"899c86a1_fd0948ff","line":117,"in_reply_to":"134b4060_75ecde88","updated":"2023-02-01 18:21:50.000000000","message":"Ack","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[{"line_number":39,"context_line":"SYSFILE \u003d \u0027sys.tar.gz\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TEMPFileSystemFixture(fixtures.Fixture):"},{"line_number":43,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"2ade893a_c6640d70","line":42,"range":{"start_line":42,"start_character":6,"end_line":42,"end_character":10},"updated":"2023-02-08 18:18:37.000000000","message":"nit: TempFile...","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"SYSFILE \u003d \u0027sys.tar.gz\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TEMPFileSystemFixture(fixtures.Fixture):"},{"line_number":43,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3250ad1a_ec8674a2","line":42,"range":{"start_line":42,"start_character":6,"end_line":42,"end_character":10},"in_reply_to":"2ade893a_c6640d70","updated":"2023-02-09 17:07:45.000000000","message":"Ack","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[{"line_number":42,"context_line":"class TEMPFileSystemFixture(fixtures.Fixture):"},{"line_number":43,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _setUp(self):"},{"line_number":46,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":47,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":48,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"2a5a8260_e9b43b7d","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"updated":"2023-02-08 18:18:37.000000000","message":"What is wrong with the normal setUp()?","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":true,"context_lines":[{"line_number":42,"context_line":"class TEMPFileSystemFixture(fixtures.Fixture):"},{"line_number":43,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _setUp(self):"},{"line_number":46,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":47,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":48,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"c8b5b308_8dbf1eb0","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"in_reply_to":"2a5a8260_e9b43b7d","updated":"2023-02-09 17:07:45.000000000","message":"This is a fixture so you need to define a private _setUp() method when inheriting, not the main one.\nhttps://github.com/testing-cabal/fixtures#errors-in-setup","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"class TEMPFileSystemFixture(fixtures.Fixture):"},{"line_number":43,"context_line":"    \"\"\"Creates a fake / filesystem\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _setUp(self):"},{"line_number":46,"context_line":"        if not hasattr(self, \u0027temp_dir\u0027):"},{"line_number":47,"context_line":"            self.temp_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027fake_fs\u0027)"},{"line_number":48,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"f471b909_65e3647a","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"in_reply_to":"c8b5b308_8dbf1eb0","updated":"2023-02-09 18:10:53.000000000","message":"hahh I learned something today. Thanks. We should consider switching our other fixtures over to use _setUp","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class SYSFileSystemFixture(TEMPFileSystemFixture):"},{"line_number":52,"context_line":"    \"\"\"Creates a fake /sys filesystem\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"6ca6df2c_3c0f2e79","line":51,"range":{"start_line":51,"start_character":6,"end_line":51,"end_character":10},"updated":"2023-02-08 18:18:37.000000000","message":"nit: SysFile...","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            self.addCleanup(shutil.rmtree, self.temp_dir, ignore_errors\u003dTrue)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class SYSFileSystemFixture(TEMPFileSystemFixture):"},{"line_number":52,"context_line":"    \"\"\"Creates a fake /sys filesystem\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bb9b675b_b59ce2b6","line":51,"range":{"start_line":51,"start_character":6,"end_line":51,"end_character":10},"in_reply_to":"6ca6df2c_3c0f2e79","updated":"2023-02-09 17:07:45.000000000","message":"Ack","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[{"line_number":55,"context_line":"        super()._setUp()"},{"line_number":56,"context_line":"        self.sys_path \u003d os.path.join(self.temp_dir, SYS)"},{"line_number":57,"context_line":"        self.addCleanup(shutil.rmtree, self.sys_path, ignore_errors\u003dTrue)"},{"line_number":58,"context_line":"        with tarfile.open(os.path.join(DATA_PATH_BASE, SYSFILE), \"r:*\") as tar:"},{"line_number":59,"context_line":"            tar.extractall(path\u003dself.temp_dir)"},{"line_number":60,"context_line":"        sys_patcher \u003d mock.patch("},{"line_number":61,"context_line":"            \u0027nova.filesystem.SYS\u0027,"},{"line_number":62,"context_line":"            new_callable\u003dmock.PropertyMock(return_value\u003dself.sys_path))"}],"source_content_type":"text/x-python","patch_set":9,"id":"146ac21e_68a94a1c","line":59,"range":{"start_line":58,"start_character":0,"end_line":59,"end_character":46},"updated":"2023-02-08 18:18:37.000000000","message":"Ohh please don\u0027t. We are storing binary in git that is impossible to review and diff online. Can we just create couple of helpers functions that generate the filesystem for a given cpu core?","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        super()._setUp()"},{"line_number":56,"context_line":"        self.sys_path \u003d os.path.join(self.temp_dir, SYS)"},{"line_number":57,"context_line":"        self.addCleanup(shutil.rmtree, self.sys_path, ignore_errors\u003dTrue)"},{"line_number":58,"context_line":"        with tarfile.open(os.path.join(DATA_PATH_BASE, SYSFILE), \"r:*\") as tar:"},{"line_number":59,"context_line":"            tar.extractall(path\u003dself.temp_dir)"},{"line_number":60,"context_line":"        sys_patcher \u003d mock.patch("},{"line_number":61,"context_line":"            \u0027nova.filesystem.SYS\u0027,"},{"line_number":62,"context_line":"            new_callable\u003dmock.PropertyMock(return_value\u003dself.sys_path))"}],"source_content_type":"text/x-python","patch_set":9,"id":"e8a2b8e3_8f94575f","line":59,"range":{"start_line":58,"start_character":0,"end_line":59,"end_character":46},"in_reply_to":"146ac21e_68a94a1c","updated":"2023-02-09 17:07:45.000000000","message":"Ack","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[{"line_number":164,"context_line":"        # Let\u0027s verify that the pinned CPUs are now online"},{"line_number":165,"context_line":"        self._assert_server_cpus_state(server, expected\u003d\u0027online\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # Verify that the unpinned CPUs are still offline"},{"line_number":168,"context_line":"        inst \u003d objects.Instance.get_by_uuid(self.ctxt, server[\u0027id\u0027])"},{"line_number":169,"context_line":"        instance_pcpus \u003d inst.numa_topology.cpu_pinning"},{"line_number":170,"context_line":"        cpu_dedicated_set \u003d hardware.get_cpu_dedicated_set()"}],"source_content_type":"text/x-python","patch_set":9,"id":"a551e189_cd86f87f","line":167,"range":{"start_line":167,"start_character":26,"end_line":167,"end_character":34},"updated":"2023-02-08 18:18:37.000000000","message":"nit: unused","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # Let\u0027s verify that the pinned CPUs are now online"},{"line_number":165,"context_line":"        self._assert_server_cpus_state(server, expected\u003d\u0027online\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # Verify that the unpinned CPUs are still offline"},{"line_number":168,"context_line":"        inst \u003d objects.Instance.get_by_uuid(self.ctxt, server[\u0027id\u0027])"},{"line_number":169,"context_line":"        instance_pcpus \u003d inst.numa_topology.cpu_pinning"},{"line_number":170,"context_line":"        cpu_dedicated_set \u003d hardware.get_cpu_dedicated_set()"}],"source_content_type":"text/x-python","patch_set":9,"id":"755d915d_8f5977e8","line":167,"range":{"start_line":167,"start_character":26,"end_line":167,"end_character":34},"in_reply_to":"a551e189_cd86f87f","updated":"2023-02-09 17:07:45.000000000","message":"Ack","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"80828215_bca44b0b","line":271,"updated":"2023-02-08 18:18:37.000000000","message":"please add a reconfiguration testcase where we move from cpu_state to governor and vice versa.","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0465116f_c0a1473f","line":271,"in_reply_to":"80828215_bca44b0b","updated":"2023-02-09 18:10:53.000000000","message":"Done","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":93,"context_line":"        self.useFixture(nova_fixtures.SysFileSystemFixture())"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Definining all the CPUs to be pinned."},{"line_number":96,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-9\u0027, cpu_shared_set\u003dNone,"},{"line_number":97,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":98,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":99,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"640388da_6acd1dcc","line":96,"updated":"2023-02-10 09:52:11.000000000","message":"i would prefer if you avoided core 0 since that cant actuuly be turned off in general on a real linux system.\n\nin more recent kernels with a specific non default compiler option you can make it offlinebale but in reallity that is not going to be used in any distor kernel.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.useFixture(nova_fixtures.SysFileSystemFixture())"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Definining all the CPUs to be pinned."},{"line_number":96,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-9\u0027, cpu_shared_set\u003dNone,"},{"line_number":97,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":98,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":99,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"11c26c61_4f2d2cf6","line":96,"in_reply_to":"640388da_6acd1dcc","updated":"2023-02-10 12:02:13.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":104,"context_line":"        self.compute1 \u003d self.start_compute(host_info\u003dself.host_info,"},{"line_number":105,"context_line":"                                           hostname\u003d\u0027compute1\u0027)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # All cores are shutdown at startup, let\u0027s check."},{"line_number":108,"context_line":"        cpu_dedicated_set \u003d hardware.get_cpu_dedicated_set()"},{"line_number":109,"context_line":"        self._assert_cpu_set_state(cpu_dedicated_set, expected\u003d\u0027offline\u0027)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3d4d5c40_4edd7281","line":107,"updated":"2023-02-10 09:52:11.000000000","message":"ok this is asserted in the setup \nthat works to not need to do this in each test","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        self.compute1 \u003d self.start_compute(host_info\u003dself.host_info,"},{"line_number":105,"context_line":"                                           hostname\u003d\u0027compute1\u0027)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # All cores are shutdown at startup, let\u0027s check."},{"line_number":108,"context_line":"        cpu_dedicated_set \u003d hardware.get_cpu_dedicated_set()"},{"line_number":109,"context_line":"        self._assert_cpu_set_state(cpu_dedicated_set, expected\u003d\u0027offline\u0027)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"670b27c4_3500ce0e","line":107,"in_reply_to":"3d4d5c40_4edd7281","updated":"2023-02-10 12:02:13.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"},{"line_number":116,"context_line":"        self.assertRaises(exception.InvalidConfiguration,"},{"line_number":117,"context_line":"                          self.start_compute, host_info\u003dself.host_info,"},{"line_number":118,"context_line":"                                              hostname\u003d\u0027compute2\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_create_server(self):"},{"line_number":121,"context_line":"        server \u003d self._create_server("}],"source_content_type":"text/x-python","patch_set":11,"id":"349f9135_4cd42ecb","line":118,"updated":"2023-02-10 09:52:11.000000000","message":"+1","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":185,"context_line":"        self.useFixture(nova_fixtures.SysFileSystemFixture())"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # Definining all the CPUs to be pinned."},{"line_number":188,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-9\u0027, cpu_shared_set\u003dNone,"},{"line_number":189,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":190,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":191,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"8779d47c_00f5f12b","line":188,"updated":"2023-02-10 09:52:11.000000000","message":"same nit as above in general ist bad pratice to include core 0 in the cpu_dedicated_set since the linux treats core 0 differently by using it as the default handleer for thing like IRQs or panics and some other importnat thigns\n\nthis is really just a nit because this is in test code but ingeneral you should not config core 0 in the cpu_dedicated_set because you should not be running vms on it and deffinetly not pinned ones.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        self.useFixture(nova_fixtures.SysFileSystemFixture())"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # Definining all the CPUs to be pinned."},{"line_number":188,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-9\u0027, cpu_shared_set\u003dNone,"},{"line_number":189,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":190,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":191,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1db597ae_2451dfc6","line":188,"in_reply_to":"8779d47c_00f5f12b","updated":"2023-02-10 12:02:13.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":230,"context_line":"        self.useFixture(nova_fixtures.SysFileSystemFixture())"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        # Definining 6 CPUs to be dedicated, not all of them in a series."},{"line_number":233,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-2,5-7\u0027, cpu_shared_set\u003d\u00273-4,8-9\u0027,"},{"line_number":234,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":235,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":236,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f8ed3809_e57c917b","line":233,"updated":"2023-02-10 09:52:11.000000000","message":"again swap these having core 0 in cpu_shared_set is more ok then cpu_dedicated_set althogh still not ideally. its prefered to not have it in either.\n\n(often you would pin nova_compute to core 0 with libvirt et all)","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        self.useFixture(nova_fixtures.SysFileSystemFixture())"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        # Definining 6 CPUs to be dedicated, not all of them in a series."},{"line_number":233,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-2,5-7\u0027, cpu_shared_set\u003d\u00273-4,8-9\u0027,"},{"line_number":234,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":235,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":236,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"a033f1ab_4ea87cfd","line":233,"in_reply_to":"f8ed3809_e57c917b","updated":"2023-02-10 12:02:13.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a4a6edc72e235dfb14577ba62dc4f699c3fc033","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Definining the CPUs to be pinned."},{"line_number":96,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00271-9\u0027, cpu_shared_set\u003dNone,"},{"line_number":97,"context_line":"                   group\u003d\u0027compute\u0027)"},{"line_number":98,"context_line":"        self.flags(vcpu_pin_set\u003dNone)"},{"line_number":99,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"d6364e41_aaeb1702","line":97,"updated":"2023-02-10 12:32:00.000000000","message":"+1","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"}],"nova/tests/unit/virt/libvirt/cpu/test_api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a4a6edc72e235dfb14577ba62dc4f699c3fc033","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    @mock.patch.object(core, \u0027set_online\u0027)"},{"line_number":75,"context_line":"    def test_power_up_online(self, mock_online):"},{"line_number":76,"context_line":"        self.flags(cpu_power_management\u003dTrue, group\u003d\u0027libvirt\u0027)"},{"line_number":77,"context_line":"        self.flags(cpu_dedicated_set\u003d\u00270-1\u0027, group\u003d\u0027compute\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        api.power_up(self.fake_inst)"},{"line_number":80,"context_line":"        # only core #0 can be set as core #2 is not on the dedicated set"}],"source_content_type":"text/x-python","patch_set":12,"id":"89803d53_85d5b954","line":77,"updated":"2023-02-10 12:32:00.000000000","message":"im more ok with you using 0 in the unit test since your not fakeing out sysfs","commit_id":"0807b7ae9a0e5ef02dba4e50cf773032c10ace44"}],"nova/virt/libvirt/cpu/__init__.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"801fa29bec0462b8e74cef94c7c5c611db87c6f8","unresolved":true,"context_lines":[{"line_number":75,"context_line":"            core.set_governor(self.path, CONF.libvirt.cpu_power_governor_low)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def power_up(guest: guest.Guest) -\u003e None:"},{"line_number":79,"context_line":"    if not CONF.libvirt.cpu_power_management:"},{"line_number":80,"context_line":"        return"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"2fb789be_26173266","line":78,"updated":"2023-01-24 00:36:32.000000000","message":"i like the name","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e271b02dacb764fe738ecae9963cd59b9f607f64","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            core.set_governor(self.path, CONF.libvirt.cpu_power_governor_low)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def power_up(guest: guest.Guest) -\u003e None:"},{"line_number":79,"context_line":"    if not CONF.libvirt.cpu_power_management:"},{"line_number":80,"context_line":"        return"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f8318ab3_87d00949","line":78,"in_reply_to":"2fb789be_26173266","updated":"2023-02-01 18:21:50.000000000","message":"Done","commit_id":"86469afa526633e1997de83f787f24d29bf98d26"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":19,"context_line":"power_up \u003d api.power_up"},{"line_number":20,"context_line":"power_down \u003d api.power_down"},{"line_number":21,"context_line":"validate_all_dedicated_cpus \u003d api.validate_all_dedicated_cpus"},{"line_number":22,"context_line":"power_down_all_dedicated_cpus \u003d api.power_down_all_dedicated_cpus"}],"source_content_type":"text/x-python","patch_set":11,"id":"a77e9e86_969f84ff","line":22,"updated":"2023-02-10 09:52:11.000000000","message":"by the way i still dont like this.\n\ni do not like when we have any contnet in __init__.py\n\ni wont block on this but this and relitive imports are two thing i would like to see removed form the code based eventually.\n\ni find this more confustingn and less readable then importing form api.\ni would prefer us to do\n\nform nova.virt.libvirt.cpu import api\ninstead of \nform nova.virt.libvirt import cpu\n\nand then to api.Core over cpu.Core\n\nyou dont need to change this for me to be ok with merging this i just see this as a code smell","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a4a6edc72e235dfb14577ba62dc4f699c3fc033","unresolved":false,"context_lines":[{"line_number":19,"context_line":"power_up \u003d api.power_up"},{"line_number":20,"context_line":"power_down \u003d api.power_down"},{"line_number":21,"context_line":"validate_all_dedicated_cpus \u003d api.validate_all_dedicated_cpus"},{"line_number":22,"context_line":"power_down_all_dedicated_cpus \u003d api.power_down_all_dedicated_cpus"}],"source_content_type":"text/x-python","patch_set":11,"id":"a7581cc7_cd1c9d5a","line":22,"in_reply_to":"3f1b635e_1ceccabd","updated":"2023-02-10 12:32:00.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":true,"context_lines":[{"line_number":19,"context_line":"power_up \u003d api.power_up"},{"line_number":20,"context_line":"power_down \u003d api.power_down"},{"line_number":21,"context_line":"validate_all_dedicated_cpus \u003d api.validate_all_dedicated_cpus"},{"line_number":22,"context_line":"power_down_all_dedicated_cpus \u003d api.power_down_all_dedicated_cpus"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1b635e_1ceccabd","line":22,"in_reply_to":"a77e9e86_969f84ff","updated":"2023-02-10 12:02:13.000000000","message":"I\u0027ll do the change in a follow-up so.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"}],"nova/virt/libvirt/cpu/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46200022a7916818398b2861cd265dc8c9b04f06","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        return str(self.ident)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def power_up(guest: guest.Guest) -\u003e None:"},{"line_number":74,"context_line":"    if not CONF.libvirt.cpu_power_management:"},{"line_number":75,"context_line":"        return"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d34a9e64_22eb71e0","line":73,"range":{"start_line":73,"start_character":13,"end_line":73,"end_character":31},"updated":"2023-02-01 19:20:17.000000000","message":"we chatted about this so this should be a set of host cpu ids\nnot a guest object\n\nalternitivly you can pass the instance numa toplogy blob.","commit_id":"069e6291aae8034b509158dfbb1f768b2fc0c6da"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return str(self.ident)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def power_up(guest: guest.Guest) -\u003e None:"},{"line_number":74,"context_line":"    if not CONF.libvirt.cpu_power_management:"},{"line_number":75,"context_line":"        return"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"2e2de673_b3b64f9a","line":73,"range":{"start_line":73,"start_character":13,"end_line":73,"end_character":31},"in_reply_to":"d34a9e64_22eb71e0","updated":"2023-02-09 17:07:45.000000000","message":"Done","commit_id":"069e6291aae8034b509158dfbb1f768b2fc0c6da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e734c93410108786456366b1259b87d7ff31b93","unresolved":true,"context_lines":[{"line_number":81,"context_line":"    for pcpu in pcpus:"},{"line_number":82,"context_line":"        if pcpu in cpu_dedicated_set:"},{"line_number":83,"context_line":"            pcpu \u003d Core(pcpu)"},{"line_number":84,"context_line":"            if CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027cpu_state\u0027:"},{"line_number":85,"context_line":"                pcpu.online \u003d True"},{"line_number":86,"context_line":"            else:"},{"line_number":87,"context_line":"                pcpu.set_high_governor()"},{"line_number":88,"context_line":"            powered_up.add(str(pcpu))"},{"line_number":89,"context_line":"    LOG.debug(\"Cores powered up : %s\", powered_up)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5c22a035_198dbb93","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":40},"updated":"2023-02-08 18:18:37.000000000","message":"What will happen after a reconfiguration of nova from strategy\u003d\u003d\u0027cpu_state\u0027 to startegy\u003d\u0027governor\u0027 ? I think in that case there can be cpus that are offline but we won\u0027t try to online them here any more. \n\nAlso the revers direction can be interesting too. I.e. we set a low governor to a cpu, then nova was reconfigured to cpu_state and therefore we online the cpu here but keep the low governor on it.","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a4a6edc72e235dfb14577ba62dc4f699c3fc033","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    for pcpu in pcpus:"},{"line_number":82,"context_line":"        if pcpu in cpu_dedicated_set:"},{"line_number":83,"context_line":"            pcpu \u003d Core(pcpu)"},{"line_number":84,"context_line":"            if CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027cpu_state\u0027:"},{"line_number":85,"context_line":"                pcpu.online \u003d True"},{"line_number":86,"context_line":"            else:"},{"line_number":87,"context_line":"                pcpu.set_high_governor()"},{"line_number":88,"context_line":"            powered_up.add(str(pcpu))"},{"line_number":89,"context_line":"    LOG.debug(\"Cores powered up : %s\", powered_up)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9e938ba3_3156363c","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":40},"in_reply_to":"5c22a035_198dbb93","updated":"2023-02-10 12:32:00.000000000","message":"this is now resovelved with the check in init host","commit_id":"a9976cc72099b037153d3b87a33d8d1b24cc1f74"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f4f7870421b98355b9489e28f2692d7a0dfe6b4","unresolved":true,"context_lines":[{"line_number":149,"context_line":"                    \"before modifying the CPU states. You can reboot the \""},{"line_number":150,"context_line":"                    \"compute node if you prefer.\")"},{"line_number":151,"context_line":"            raise exception.InvalidConfiguration(msg)"},{"line_number":152,"context_line":"    elif CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027governor\u0027:"},{"line_number":153,"context_line":"        # all the cores need to be online"},{"line_number":154,"context_line":"        if False in cpu_states:"},{"line_number":155,"context_line":"            msg \u003d _(\"All the cores need to be online before modifying the \""},{"line_number":156,"context_line":"                    \"governor strategy.\")"},{"line_number":157,"context_line":"            raise exception.InvalidConfiguration(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"a30eb7c9_dbe2e81c","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":31},"updated":"2023-02-09 18:10:53.000000000","message":"when you write up the doc please note this. This means if cpu_power_management_strategy \u003d\u003d governor is used then we don\u0027t allow any manually offlined CPUs even if they are not mentioned in cpu_shared|dedicate_set. This case nova a bit oversteps its boundaries as it puts constraints to pcpu cores that are never used by nova.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c69b322ad439a152956346a3675db79b35c43c68","unresolved":true,"context_lines":[{"line_number":149,"context_line":"                    \"before modifying the CPU states. You can reboot the \""},{"line_number":150,"context_line":"                    \"compute node if you prefer.\")"},{"line_number":151,"context_line":"            raise exception.InvalidConfiguration(msg)"},{"line_number":152,"context_line":"    elif CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027governor\u0027:"},{"line_number":153,"context_line":"        # all the cores need to be online"},{"line_number":154,"context_line":"        if False in cpu_states:"},{"line_number":155,"context_line":"            msg \u003d _(\"All the cores need to be online before modifying the \""},{"line_number":156,"context_line":"                    \"governor strategy.\")"},{"line_number":157,"context_line":"            raise exception.InvalidConfiguration(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f4e0c293_f7ec9147","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":31},"in_reply_to":"8d6e4625_626cb37f","updated":"2023-02-10 12:02:13.000000000","message":"Will be noted indeed (planning to do the docs patch when I\u0027m done with reviewing other series)","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"57cba0fbd8da78e3efa90ea08f0ef822267be7d1","unresolved":true,"context_lines":[{"line_number":149,"context_line":"                    \"before modifying the CPU states. You can reboot the \""},{"line_number":150,"context_line":"                    \"compute node if you prefer.\")"},{"line_number":151,"context_line":"            raise exception.InvalidConfiguration(msg)"},{"line_number":152,"context_line":"    elif CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027governor\u0027:"},{"line_number":153,"context_line":"        # all the cores need to be online"},{"line_number":154,"context_line":"        if False in cpu_states:"},{"line_number":155,"context_line":"            msg \u003d _(\"All the cores need to be online before modifying the \""},{"line_number":156,"context_line":"                    \"governor strategy.\")"},{"line_number":157,"context_line":"            raise exception.InvalidConfiguration(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fb3f6d6b_065ca255","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":31},"in_reply_to":"8d6e4625_626cb37f","updated":"2023-02-10 11:29:35.000000000","message":"good point","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4849a760b36e06c287861eddcccdd9df55e3524","unresolved":true,"context_lines":[{"line_number":149,"context_line":"                    \"before modifying the CPU states. You can reboot the \""},{"line_number":150,"context_line":"                    \"compute node if you prefer.\")"},{"line_number":151,"context_line":"            raise exception.InvalidConfiguration(msg)"},{"line_number":152,"context_line":"    elif CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027governor\u0027:"},{"line_number":153,"context_line":"        # all the cores need to be online"},{"line_number":154,"context_line":"        if False in cpu_states:"},{"line_number":155,"context_line":"            msg \u003d _(\"All the cores need to be online before modifying the \""},{"line_number":156,"context_line":"                    \"governor strategy.\")"},{"line_number":157,"context_line":"            raise exception.InvalidConfiguration(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"8d6e4625_626cb37f","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":31},"in_reply_to":"a30eb7c9_dbe2e81c","updated":"2023-02-10 09:52:11.000000000","message":"in the docs we should also note that core 0 generaly cannot be offlined and its\nconsiderd bad pratice to include it in cpu_dedicated_set in general.","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5a4a6edc72e235dfb14577ba62dc4f699c3fc033","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    \"before modifying the CPU states. You can reboot the \""},{"line_number":150,"context_line":"                    \"compute node if you prefer.\")"},{"line_number":151,"context_line":"            raise exception.InvalidConfiguration(msg)"},{"line_number":152,"context_line":"    elif CONF.libvirt.cpu_power_management_strategy \u003d\u003d \u0027governor\u0027:"},{"line_number":153,"context_line":"        # all the cores need to be online"},{"line_number":154,"context_line":"        if False in cpu_states:"},{"line_number":155,"context_line":"            msg \u003d _(\"All the cores need to be online before modifying the \""},{"line_number":156,"context_line":"                    \"governor strategy.\")"},{"line_number":157,"context_line":"            raise exception.InvalidConfiguration(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"775dd16a_5efa05bc","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":31},"in_reply_to":"f4e0c293_f7ec9147","updated":"2023-02-10 12:32:00.000000000","message":"Ack","commit_id":"dbb70c13d77ae3f47661c78d7707d156f7d26283"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46200022a7916818398b2861cd265dc8c9b04f06","unresolved":true,"context_lines":[{"line_number":1519,"context_line":"            if CONF.libvirt.virt_type \u003d\u003d \u0027lxc\u0027:"},{"line_number":1520,"context_line":"                self._teardown_container(instance)"},{"line_number":1521,"context_line":"            # We\u0027re sure the instance is gone, we can shutdown the core if so"},{"line_number":1522,"context_line":"            libvirt_cpu.power_down(guest)"},{"line_number":1523,"context_line":""},{"line_number":1524,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1525,"context_line":"                destroy_disks\u003dTrue, destroy_secrets\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f5c0eec_e57652e5","line":1522,"updated":"2023-02-01 19:20:17.000000000","message":"here and elsewhere you shoudl be passing instance.numa_toplogy.cpu_pinning\n\nthat is the set of host cpus used by the guest\n\nit is the vlaues of cpu_pinning_raw\n\ncpu_pinning_raw is a map of the qemu cpu id to host cpus.\n\nInstanceNUMACell(cpu_pinning_raw\u003d{0\u003d0,1\u003d1,2\u003d2,3\u003d3,4\u003d6},cpu_policy\u003d\u0027dedicated\u0027,cpu_thread_policy\u003d\u0027prefer\u0027,cpu_topology\u003d\u003c?\u003e,cpuset\u003dset([]),cpuset_reserved\u003dNone,id\u003d0,memory\u003d2048,pagesize\u003dNone,pcpuset\u003dset([0,1,2,3,4]))\n\nto find what corea a logical guest core is pinned too you index the cpu_pinning_raw dictionary witht teh vm core id.\n\nso n the exampel above the first vm core is pinned to host core 0 and the 5th vm core is pinned to host core 6\n\ninstance.numa_toplogy.cpu_pinning is the same as cpu_pinning_raw.values()","commit_id":"069e6291aae8034b509158dfbb1f768b2fc0c6da"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"705fbbb863bdf75321c2547f20f1e9265de7685b","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"            if CONF.libvirt.virt_type \u003d\u003d \u0027lxc\u0027:"},{"line_number":1520,"context_line":"                self._teardown_container(instance)"},{"line_number":1521,"context_line":"            # We\u0027re sure the instance is gone, we can shutdown the core if so"},{"line_number":1522,"context_line":"            libvirt_cpu.power_down(guest)"},{"line_number":1523,"context_line":""},{"line_number":1524,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1525,"context_line":"                destroy_disks\u003dTrue, destroy_secrets\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba6ba628_3fe6afd9","line":1522,"in_reply_to":"3f5c0eec_e57652e5","updated":"2023-02-09 17:07:45.000000000","message":"Done","commit_id":"069e6291aae8034b509158dfbb1f768b2fc0c6da"}]}
