)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d22344f3d52f981edb08d81364fdcdca7f815a81","unresolved":true,"context_lines":[{"line_number":12,"context_line":"this option will serve no purpose once eventlet is gone and is now"},{"line_number":13,"context_line":"formally deprecated for removal in 35.0.0."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Changes:"},{"line_number":16,"context_line":"- Add deprecated_for_removal\u003dTrue, deprecated_since\u003d\u002735.0.0\u0027, and"},{"line_number":17,"context_line":"  deprecated_reason to the cfg.StrOpt in nova/conf/base.py so that"},{"line_number":18,"context_line":"  oslo.config emits a standard deprecation warning for any operator"},{"line_number":19,"context_line":"  who has the option explicitly set in their config file."},{"line_number":20,"context_line":"- Replace LOG.warning() in monkey_patch.patch() with"},{"line_number":21,"context_line":"  versionutils.report_deprecated_feature() so that a Python"},{"line_number":22,"context_line":"  DeprecationWarning is also emitted (not just a log message) whenever"},{"line_number":23,"context_line":"  a service actually starts in eventlet mode, regardless of whether"},{"line_number":24,"context_line":"  that was via an explicit concurrency_backend\u003deventlet or via the"},{"line_number":25,"context_line":"  auto + binary-default-eventlet path."},{"line_number":26,"context_line":"- Update the concurrency admin guide with a .. deprecated:: 35.0.0"},{"line_number":27,"context_line":"  directive at the concurrency_backend section."},{"line_number":28,"context_line":"- Add a release note focused on the option deprecation (distinct from"},{"line_number":29,"context_line":"  the earlier eventlet-mode deprecation note)."},{"line_number":30,"context_line":"- Update the affected unit tests to mock report_deprecated_feature and"},{"line_number":31,"context_line":"  assert it is called on the eventlet path and not called on the"},{"line_number":32,"context_line":"  threading path."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Operators using the default (auto) or threading need take no action"},{"line_number":35,"context_line":"other than eventually removing the option from their config. Operators"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"4f16230a_17144fa7","line":32,"range":{"start_line":15,"start_character":0,"end_line":32,"end_character":17},"updated":"2026-10-20 14:09:32.000000000","message":"(nit) This is general pattern seen in AI-generated commits but I find these two verbose descriptions quite redundant and adds no real benefit. These are just describing the whole diff .","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9f21a1378e7ce39bd1f8c88a525aaf01d1d8e47a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"this option will serve no purpose once eventlet is gone and is now"},{"line_number":13,"context_line":"formally deprecated for removal in 35.0.0."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Changes:"},{"line_number":16,"context_line":"- Add deprecated_for_removal\u003dTrue, deprecated_since\u003d\u002735.0.0\u0027, and"},{"line_number":17,"context_line":"  deprecated_reason to the cfg.StrOpt in nova/conf/base.py so that"},{"line_number":18,"context_line":"  oslo.config emits a standard deprecation warning for any operator"},{"line_number":19,"context_line":"  who has the option explicitly set in their config file."},{"line_number":20,"context_line":"- Replace LOG.warning() in monkey_patch.patch() with"},{"line_number":21,"context_line":"  versionutils.report_deprecated_feature() so that a Python"},{"line_number":22,"context_line":"  DeprecationWarning is also emitted (not just a log message) whenever"},{"line_number":23,"context_line":"  a service actually starts in eventlet mode, regardless of whether"},{"line_number":24,"context_line":"  that was via an explicit concurrency_backend\u003deventlet or via the"},{"line_number":25,"context_line":"  auto + binary-default-eventlet path."},{"line_number":26,"context_line":"- Update the concurrency admin guide with a .. deprecated:: 35.0.0"},{"line_number":27,"context_line":"  directive at the concurrency_backend section."},{"line_number":28,"context_line":"- Add a release note focused on the option deprecation (distinct from"},{"line_number":29,"context_line":"  the earlier eventlet-mode deprecation note)."},{"line_number":30,"context_line":"- Update the affected unit tests to mock report_deprecated_feature and"},{"line_number":31,"context_line":"  assert it is called on the eventlet path and not called on the"},{"line_number":32,"context_line":"  threading path."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Operators using the default (auto) or threading need take no action"},{"line_number":35,"context_line":"other than eventually removing the option from their config. Operators"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"b1c9c82a_56952c1f","line":32,"range":{"start_line":15,"start_character":0,"end_line":32,"end_character":17},"in_reply_to":"4f16230a_17144fa7","updated":"2026-10-20 15:19:53.000000000","message":"sorry i guess i didnt really read teh commit message closely.\n\nand yes i have a propse skillf or this which stop ai form generatign thise type of verbos \"what change\" list\n\nthanks for droping this","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d22344f3d52f981edb08d81364fdcdca7f815a81","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Change-Id: If4c651f4b4cec4d1f060c09600ed995b82a3607b"},{"line_number":39,"context_line":"Signed-off-by: Kamil Sambor \u003cksambor@redhat.com\u003e"},{"line_number":40,"context_line":"Co-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"c3899694_308d32a1","line":40,"range":{"start_line":40,"start_character":1,"end_line":40,"end_character":14},"updated":"2026-10-20 14:09:32.000000000","message":"Assisted-By","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e1836ead2d13dd6f59695c40a511997886733028","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Change-Id: If4c651f4b4cec4d1f060c09600ed995b82a3607b"},{"line_number":39,"context_line":"Signed-off-by: Kamil Sambor \u003cksambor@redhat.com\u003e"},{"line_number":40,"context_line":"Co-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f40375ce_66dc8a35","line":40,"range":{"start_line":40,"start_character":1,"end_line":40,"end_character":14},"in_reply_to":"c3899694_308d32a1","updated":"2026-10-20 14:10:10.000000000","message":"Do you mind fixing this quickly, to make this compliant with the general guideline ?","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9f21a1378e7ce39bd1f8c88a525aaf01d1d8e47a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Change-Id: If4c651f4b4cec4d1f060c09600ed995b82a3607b"},{"line_number":39,"context_line":"Signed-off-by: Kamil Sambor \u003cksambor@redhat.com\u003e"},{"line_number":40,"context_line":"Co-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"2dcc86cf_a1e17e80","line":40,"range":{"start_line":40,"start_character":1,"end_line":40,"end_character":14},"in_reply_to":"f40375ce_66dc8a35","updated":"2026-10-20 15:19:53.000000000","message":"oh right good catch i missed that","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bd4600227eaa9595664c1077b8b9bd2b31799ee6","unresolved":true,"context_lines":[{"line_number":12,"context_line":"this option will serve no purpose once eventlet is gone and is now"},{"line_number":13,"context_line":"formally deprecated for removal in 35.0.0."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Operators using the default (auto) or threading need take no action"},{"line_number":16,"context_line":"other than eventually removing the option from their config. Operators"},{"line_number":17,"context_line":"still on eventlet should migrate to native threading before 2027.2."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"a237fc51_a69458ee","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":34},"updated":"2026-10-20 17:15:24.000000000","message":"this will have impact as novnc/serial/spice console proxy services are not yet default to threading mode.","commit_id":"90c29bac83624e5c2ad284dc0c40b269656fd1eb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c77507d14b4f31268c8f7d8e83233440102b9f0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"31efa52b_c9e99be4","updated":"2026-10-20 12:41:48.000000000","message":"recheck unrelated test failure\n\n\n```\n2026-10-20 10:06:44,234 ERROR [nova.api.openstack.wsgi] Unexpected exception in API method\nTraceback (most recent call last):\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/openstack/wsgi.py\", line 766, in wrapped\n    return f(*args, **kwargs)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/validation/__init__.py\", line 433, in wrapper\n    return func(*args, **kwargs)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/validation/__init__.py\", line 433, in wrapper\n    return func(*args, **kwargs)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/validation/__init__.py\", line 296, in wrapper\n    response \u003d func(*args, **kwargs)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/validation/__init__.py\", line 296, in wrapper\n    response \u003d func(*args, **kwargs)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/validation/__init__.py\", line 296, in wrapper\n    response \u003d func(*args, **kwargs)\n  [Previous line repeated 12 more times]\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/openstack/compute/servers.py\", line 511, in show\n    return self._view_builder.show(\n           ~~~~~~~~~~~~~~~~~~~~~~~^\n        req, instance, cell_down_support\u003dcell_down_support,\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n        show_server_groups\u003dshow_server_groups)\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/openstack/compute/views/servers.py\", line 353, in show\n    self._add_security_grps(request, [server[\"server\"]], [instance])\n    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/api/openstack/compute/views/servers.py\", line 760, in _add_security_grps\n    security_group_api.get_instances_security_groups_bindings(\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n        context, servers))\n        ^^^^^^^^^^^^^^^^^\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/network/security_group_api.py\", line 530, in get_instances_security_groups_bindings\n    ports \u003d _get_ports_from_server_list(servers, neutron)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/network/security_group_api.py\", line 477, in _get_ports_from_server_list\n    ports.extend(neutron.list_ports(\n                 ~~~~~~~~~~~~~~~~~~^\n        fields\u003d[\u0027security_groups\u0027, \u0027device_id\u0027],\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n        **search_opts).get(\u0027ports\u0027))\n        ^^^^^^^^^^^^^^\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/tests/fixtures/neutron.py\", line 51, in list_ports\n    return self.fixture.list_ports(\n           ~~~~~~~~~~~~~~~~~~~~~~~^\n        self.is_admin, retrieve_all\u003dretrieve_all, **_params,\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    )\n    ^\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/tests/functional/test_servers_resource_request.py\", line 247, in list_ports\n    ports_dict \u003d super().list_ports(is_admin, retrieve_all\u003dTrue, **_params)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/tests/fixtures/neutron.py\", line 838, in list_ports\n    ports \u003d self._list_resource(self._ports, retrieve_all, **_params)\n  File \"/home/zuul/src/opendev.org/openstack/nova/nova/tests/fixtures/neutron.py\", line 770, in _list_resource\n    result.append(copy.deepcopy(resource))\n                  ~~~~~~~~~~~~~^^^^^^^^^^\n  File \"/usr/local/lib/python3.14/copy.py\", line 131, in deepcopy\n    y \u003d copier(x, memo)\n  File \"/usr/local/lib/python3.14/copy.py\", line 201, in _deepcopy_dict\n    for key, value in x.items():\n                      ~~~~~~~^^\nRuntimeError: dictionary changed size during iteration\n```","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bd4600227eaa9595664c1077b8b9bd2b31799ee6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d362518c_6f24625d","updated":"2026-10-20 17:15:24.000000000","message":"I am ok to deprecated but we need to swtich the novnc/serial/spice console proxy default first and then deprecate it?","commit_id":"90c29bac83624e5c2ad284dc0c40b269656fd1eb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8274e914e898d968dfdb509bb1cdc00409cfd1f0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"17cd2a51_ea82002d","updated":"2026-10-20 17:19:03.000000000","message":"Oh wait I thought we merged the switch but we didn\u0027t. I noticed that this is duplicate of https://review.opendev.org/c/openstack/nova/+/1011513 which depends on the switch of console services.\n\n@ksambor@redhat.com I wonder if you intended to use that one ?","commit_id":"90c29bac83624e5c2ad284dc0c40b269656fd1eb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"3fb07cb1172c53f6c932107b4b185ade236a0583","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9c03f302_2506a77d","updated":"2026-10-20 16:27:36.000000000","message":"Thanks","commit_id":"90c29bac83624e5c2ad284dc0c40b269656fd1eb"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"7b92efaff40f3fae478a39ffc8802c11b3fdf82a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3b804311_d9bde9dd","in_reply_to":"17cd2a51_ea82002d","updated":"2026-10-21 07:30:46.000000000","message":"Thanks! I\u0027ve cleaned up the dependencies, and I also updated this to depend on the latest changes from the default branch (in the CLI).","commit_id":"90c29bac83624e5c2ad284dc0c40b269656fd1eb"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"7b92efaff40f3fae478a39ffc8802c11b3fdf82a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7a557854_4e5fe57a","in_reply_to":"d362518c_6f24625d","updated":"2026-10-21 07:30:46.000000000","message":"We\u0027ve now switched the console proxies to use threading, so this will only depend on the CLI. Once we merge, I think we should be good to go with this patch.","commit_id":"90c29bac83624e5c2ad284dc0c40b269656fd1eb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4d692a1ccebbf8343d19c21bfde4c84ae1b77851","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9964128c_7cda8205","updated":"2026-10-21 16:30:10.000000000","message":"recheck test_image_defined_boot_from_volume ssh timeout in multi-cell job otherwise lgtm","commit_id":"da293c7afc856e3ea518a911a0ff21f09ce0e366"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"8757fde45f9b9cd0f13814a5766bc90f929ea037","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"036fba92_e1b312c8","updated":"2026-10-26 10:45:44.000000000","message":"recheck","commit_id":"299d4c2d15461f0ea91443f4b9ea6032048810e5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"59b53e7e92c516a82ae07fc69e21c3a75725ed00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c5d8543d_2cf636a3","updated":"2026-10-26 07:50:51.000000000","message":"recheck","commit_id":"299d4c2d15461f0ea91443f4b9ea6032048810e5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"deeb452e177f8913cd73d027901ba0d1654643ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ca03b3bb_497f3338","updated":"2026-10-26 16:37:59.000000000","message":"recheck","commit_id":"299d4c2d15461f0ea91443f4b9ea6032048810e5"}],"nova/monkey_patch.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c77507d14b4f31268c8f7d8e83233440102b9f0f","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            import oslo_service.backend as service"},{"line_number":156,"context_line":"            service.init_backend(service.BackendType.EVENTLET)"},{"line_number":157,"context_line":"            from oslo_log import log as logging"},{"line_number":158,"context_line":"            from oslo_log import versionutils"},{"line_number":159,"context_line":"            LOG \u003d logging.getLogger(__name__)"},{"line_number":160,"context_line":"            LOG.info(\"Service is starting with Eventlet based service backend\")"},{"line_number":161,"context_line":"            versionutils.report_deprecated_feature("}],"source_content_type":"text/x-python","patch_set":1,"id":"8294b1ec_2f6e5e90","line":158,"range":{"start_line":158,"start_character":12,"end_line":158,"end_character":45},"updated":"2026-10-20 12:41:48.000000000","message":"i guess this is fine.\n\nwe normally use debtcollector instead.","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9f21a1378e7ce39bd1f8c88a525aaf01d1d8e47a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            import oslo_service.backend as service"},{"line_number":156,"context_line":"            service.init_backend(service.BackendType.EVENTLET)"},{"line_number":157,"context_line":"            from oslo_log import log as logging"},{"line_number":158,"context_line":"            from oslo_log import versionutils"},{"line_number":159,"context_line":"            LOG \u003d logging.getLogger(__name__)"},{"line_number":160,"context_line":"            LOG.info(\"Service is starting with Eventlet based service backend\")"},{"line_number":161,"context_line":"            versionutils.report_deprecated_feature("}],"source_content_type":"text/x-python","patch_set":1,"id":"6e70b2ab_385b85cc","line":158,"range":{"start_line":158,"start_character":12,"end_line":158,"end_character":45},"in_reply_to":"388051a8_a127da9e","updated":"2026-10-20 15:19:53.000000000","message":"Acknowledged","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d22344f3d52f981edb08d81364fdcdca7f815a81","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            import oslo_service.backend as service"},{"line_number":156,"context_line":"            service.init_backend(service.BackendType.EVENTLET)"},{"line_number":157,"context_line":"            from oslo_log import log as logging"},{"line_number":158,"context_line":"            from oslo_log import versionutils"},{"line_number":159,"context_line":"            LOG \u003d logging.getLogger(__name__)"},{"line_number":160,"context_line":"            LOG.info(\"Service is starting with Eventlet based service backend\")"},{"line_number":161,"context_line":"            versionutils.report_deprecated_feature("}],"source_content_type":"text/x-python","patch_set":1,"id":"388051a8_a127da9e","line":158,"range":{"start_line":158,"start_character":12,"end_line":158,"end_character":45},"in_reply_to":"8294b1ec_2f6e5e90","updated":"2026-10-20 14:09:32.000000000","message":"The primary different from debtcollector is that is that report_deprecated_feature uses logger while debtcollector uses warnings. However I think either is fine.","commit_id":"204841cbd1d39b77059fda75af8c9f2d78aa80e2"}]}
