)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de70977c22ce9c77ea3d0f5c678e3cb816602ccd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dee40996_96b6e4b6","updated":"2025-07-29 12:54:42.000000000","message":"Tempest failure probably relevant:\n```\n2025-07-28 13:38:56,967 100543 DEBUG    [tempest.lib.common.rest_client] Request - Headers: {\u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n        Body: {\"os-getVNCConsole\": {\"type\": \"novnc\"}}\n    Response - Headers: {\u0027date\u0027: \u0027Mon, 28 Jul 2025 13:38:55 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.58 (Ubuntu)\u0027, \u0027content-length\u0027: \u0027133\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027openstack-api-version\u0027: \u0027compute 2.1\u0027, \u0027x-openstack-nova-api-version\u0027: \u00272.1\u0027, \u0027vary\u0027: \u0027OpenStack-API-Version,X-OpenStack-Nova-API-Version\u0027, \u0027x-openstack-request-id\u0027: \u0027req-369e718a-4492-4d82-8b66-5395c8601ae8\u0027, \u0027x-compute-request-id\u0027: \u0027req-369e718a-4492-4d82-8b66-5395c8601ae8\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027200\u0027, \u0027content-location\u0027: \u0027https://10.210.64.130/compute/v2.1/servers/77b51892-aa7b-48fe-80ff-fb2c4fe3f966/action\u0027}\n        Body: b\u0027{\"console\": {\"type\": \"novnc\", \"url\": \"http://10.210.64.130:6080/vnc_lite.html?path\u003d%3Ftoken%3D5e651a59-eb5a-4eb1-bb29-db994730177e\"}}\u0027\n}}}\n\nTraceback (most recent call last):\n  File \"/opt/stack/tempest/tempest/api/compute/servers/test_novnc.py\", line 195, in test_novnc\n    self._validate_rfb_negotiation()\n  File \"/opt/stack/tempest/tempest/api/compute/servers/test_novnc.py\", line 129, in _validate_rfb_negotiation\n    len(data), 4,\n    ^^^^^^^^^\nTypeError: object of type \u0027NoneType\u0027 has no len()\n```\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_fda/openstack/fda0e50141e84543b2695e4de18de7f5/testr_results.html","commit_id":"ccd9f0db02240e0d6a725b9b81fcbda2b66884d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7661cb0060332f8b5efaaff0c0141c3e69c0d2bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eb960ff1_ae7df736","updated":"2025-07-28 12:39:14.000000000","message":"rechcek","commit_id":"ccd9f0db02240e0d6a725b9b81fcbda2b66884d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d276db82292438c277a9f6f724710804a30c6bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d293ec43_5df3ea50","updated":"2025-07-28 12:39:21.000000000","message":"recheck","commit_id":"ccd9f0db02240e0d6a725b9b81fcbda2b66884d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"afc95d8396cd46254af593573e100885f3a74478","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"72d33160_a50a9453","in_reply_to":"509ad3bd_ff58c716","updated":"2025-07-31 16:34:39.000000000","message":"Lets see if I understood the problem right ...","commit_id":"ccd9f0db02240e0d6a725b9b81fcbda2b66884d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e54fd86ec32842b3bb23b3890897cdd88a72e9a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"509ad3bd_ff58c716","in_reply_to":"dee40996_96b6e4b6","updated":"2025-07-29 12:57:31.000000000","message":"```\nJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy   File \"/opt/stack/nova/nova/console/securityproxy/rfb.py\", line 198, in connect\n64\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy     compute_sock \u003d scheme.security_handshake(compute_sock)\n65\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n66\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy   File \"/opt/stack/nova/nova/console/rfb/authvencrypt.py\", line 152, in security_handshake\n67\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy     wrapped_sock \u003d ssl_ctx.wrap_socket(\n68\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy                    ^^^^^^^^^^^^^^^^^^^^\n69\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy   File \"/opt/stack/data/venv/lib/python3.12/site-packages/eventlet/green/ssl.py\", line 436, in wrap_socket\n70\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy     return GreenSSLSocket(sock, *a, _context\u003dself, **kw)\n71\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n72\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy   File \"/opt/stack/data/venv/lib/python3.12/site-packages/eventlet/green/ssl.py\", line 65, in __new__\n73\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy     ret \u003d _original_sslsocket._create(\n74\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n75\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy   File \"/usr/lib/python3.12/ssl.py\", line 970, in _create\n76\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy     raise ValueError(\"check_hostname requires server_hostname\")\n77\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy ValueError: check_hostname requires server_hostname\n78\tJul 28 13:38:58.806076 npe84ad9e376d24 nova-novncproxy[133474]: ERROR nova.console.websocketproxy \n```","commit_id":"ccd9f0db02240e0d6a725b9b81fcbda2b66884d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e76bc3c2366fa543a501728d4c1bb6af7d041fbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dd0bd862_aa86d3e8","updated":"2025-08-01 08:47:54.000000000","message":"still failing but now with a different error\n```\nTraceback (most recent call last):\n  File \"/opt/stack/tempest/tempest/api/compute/servers/test_novnc.py\", line 195, in test_novnc\n    self._validate_rfb_negotiation()\n  File \"/opt/stack/tempest/tempest/api/compute/servers/test_novnc.py\", line 128, in _validate_rfb_negotiation\n    self.assertEqual(\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/testtools/testcase.py\", line 419, in assertEqual\n    self.assertThat(observed, matcher, message)\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/testtools/testcase.py\", line 509, in assertThat\n    raise mismatch_error\ntesttools.matchers._impl.MismatchError: 48 !\u003d 4: Server did not think security was successful.\n\n```\n\n```\nJul 31 18:57:36.178907 np65a86acbdd8c4 nova-novncproxy[154811]: ERROR nova.console.websocketproxy ssl.SSLError: Cannot create a client socket with a PROTOCOL_TLS_SERVER context (_ssl.c:806)\n44\t\n```\n\nSo in summary we need a client socket, but a client socket would require a server address so simply switching to a PROTOCOL_TLS_CLIENT will fail with the previous error. \n\nI have to dig into how eventlet did those this as it only fails without eventlet. Unfortunately the eventlet code is calling deeply into the python ssl lib internals :/","commit_id":"6e8738ed8b0ee057a073f9bf151b6cb79d6b58e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09ca045327474c2649cc5a76fc8b984a2b1dbd91","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4980b89d_55e8a6ed","updated":"2025-08-15 07:48:16.000000000","message":"Still needs local troubleshooting","commit_id":"24527e7c2a5dfe72115f903b0878c37b98942621"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0aa57798e369cf9ad7abc3c0470242f9cf476aa1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"871871cd_94a57b9a","updated":"2025-08-18 13:17:58.000000000","message":"recheck unrelated volume build failure","commit_id":"15c261d27b06d63564cee094e3a2f418e2807cab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3205ef95515a9782633dc4b6c6a2ec2310fa5502","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"bf1e31fe_1eff64b5","updated":"2025-09-24 16:12:34.000000000","message":"recheck too many failures let see a cleaner run","commit_id":"5ecec0c0375f9400e590ac27768ed7bbfd1064a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50c70b4cacd066ba1b6ab9783b3020e58b739731","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"465edec8_7090d0ef","updated":"2025-10-14 15:40:03.000000000","message":"recheck guest ssh timeout (this is the second in the series but I saw this outside of the series too)","commit_id":"e30a2c53d99b8ce383a470e2d46972ad5ebada97"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"57355d37b68f104f40397cd9fbbe943758c182ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"42360c12_22b52e33","updated":"2026-03-30 14:59:54.000000000","message":"I think there is a rebase issue here","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b7b0ea35680904364253cefb89b1958bcc32a5f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"bb666e5a_e14053bc","updated":"2026-04-01 14:50:51.000000000","message":"check experimental","commit_id":"445b2088538a07108d811108eaf8b6c012231e02"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bddb23689d9d68db1fca4402e7fc225950430442","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"c8787053_6ebfb8c1","updated":"2026-04-02 15:15:55.000000000","message":"The ironic job now run on our patch but I don\u0027t see the nvc test case run there. So I will check if we break any of the ironic jobs in the ironic repo via https://review.opendev.org/c/openstack/ironic/+/983219","commit_id":"5cb77577a53d88cef16a6224615aecbb459b1a4d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f1ad6375c4be109b26666e624208462ca79d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"52100f82_dac194e4","updated":"2026-04-10 10:42:38.000000000","message":"all good, just one comment not requiring a rebase","commit_id":"5cb77577a53d88cef16a6224615aecbb459b1a4d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"59ec14e3b71473ab88a9aeccd5bf8caf50ea923c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"f9f2c368_dcae1524","updated":"2026-04-10 17:19:45.000000000","message":"thanks, lgtm","commit_id":"5cb77577a53d88cef16a6224615aecbb459b1a4d"}],"nova/console/rfb/authvencrypt.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0aa57798e369cf9ad7abc3c0470242f9cf476aa1","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            ssl_ctx.check_hostname \u003d False"},{"line_number":153,"context_line":"            wrapped_sock \u003d ssl_ctx.wrap_socket("},{"line_number":154,"context_line":"                compute_sock,"},{"line_number":155,"context_line":"                server_side\u003dFalse)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            LOG.info(\"VeNCrypt security handshake accepted\")"},{"line_number":158,"context_line":"            return wrapped_sock"}],"source_content_type":"text/x-python","patch_set":11,"id":"125c649b_59cb7fe1","line":155,"updated":"2025-08-18 13:17:58.000000000","message":"finally the tempest novnc test shows that this is the correct incantation.","commit_id":"15c261d27b06d63564cee094e3a2f418e2807cab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"95ddcb3b29e11f99d7902b5626c2664f8adb6afc","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            ssl_ctx.check_hostname \u003d False"},{"line_number":153,"context_line":"            wrapped_sock \u003d ssl_ctx.wrap_socket("},{"line_number":154,"context_line":"                compute_sock,"},{"line_number":155,"context_line":"                server_side\u003dFalse)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            LOG.info(\"VeNCrypt security handshake accepted\")"},{"line_number":158,"context_line":"            return wrapped_sock"}],"source_content_type":"text/x-python","patch_set":11,"id":"02b45176_f2e90b59","line":155,"in_reply_to":"125c649b_59cb7fe1","updated":"2026-04-10 10:33:55.000000000","message":"ack","commit_id":"15c261d27b06d63564cee094e3a2f418e2807cab"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a11dcf4988a5bb6f47dffb2a8a42f6fcd0e5adb","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            ssl_ctx \u003d ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)"},{"line_number":147,"context_line":"            ssl_ctx.load_cert_chain("},{"line_number":148,"context_line":"                keyfile\u003dclient_key,"},{"line_number":149,"context_line":"                certfile\u003dclient_cert)"},{"line_number":150,"context_line":"            ssl_ctx.load_verify_locations(cafile\u003dCONF.vnc.vencrypt_ca_certs)"}],"source_content_type":"text/x-python","patch_set":19,"id":"434277bf_10aa4605","line":147,"updated":"2026-03-31 12:14:42.000000000","message":"SSLContext.load_cert_chain() requires certfile to be a valid file path — passing None will raise TypeError at runtime when no client certificate is configured (i.e., vencrypt_client_key / vencrypt_client_cert are unset). The old ssl.wrap_socket() accepted certfile\u003dNone and simply skipped loading a client cert.\n\nThe unit test test_security_handshake_without_x509 doesn\u0027t catch this because ssl.SSLContext is fully mocked.\n\nSuggested fix:\n\nif client_cert:\n    ssl_ctx.load_cert_chain(\n        keyfile\u003dclient_key,\n        certfile\u003dclient_cert)","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2b47ae1cdca304754283cbd2e54398d780833d25","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            ssl_ctx \u003d ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)"},{"line_number":147,"context_line":"            ssl_ctx.load_cert_chain("},{"line_number":148,"context_line":"                keyfile\u003dclient_key,"},{"line_number":149,"context_line":"                certfile\u003dclient_cert)"},{"line_number":150,"context_line":"            ssl_ctx.load_verify_locations(cafile\u003dCONF.vnc.vencrypt_ca_certs)"}],"source_content_type":"text/x-python","patch_set":19,"id":"b431587f_07ed614d","line":147,"in_reply_to":"434277bf_10aa4605","updated":"2026-03-31 12:39:09.000000000","message":"sorry shouldn\u0027t be a resolved comment","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"deaf531a226a589910687265a234845b51a3aebf","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            ssl_ctx \u003d ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)"},{"line_number":147,"context_line":"            ssl_ctx.load_cert_chain("},{"line_number":148,"context_line":"                keyfile\u003dclient_key,"},{"line_number":149,"context_line":"                certfile\u003dclient_cert)"},{"line_number":150,"context_line":"            ssl_ctx.load_verify_locations(cafile\u003dCONF.vnc.vencrypt_ca_certs)"}],"source_content_type":"text/x-python","patch_set":19,"id":"c6e5bcd3_ff1ac4d3","line":147,"in_reply_to":"b431587f_07ed614d","updated":"2026-03-31 16:05:42.000000000","message":"1) The comment is not related to this change. Look at the baseline code, it uses the same variables unconditionally. So either there is a pre-existing bug (I doubt it, see below), or there is a pre condition to this code that is not visible locally but only understood from the wider context.\n\n2) The comment is probably not pointing at a real bug but simply shows that the code only considered locally. \n\n2.1.) The baseline code uses these variables unconditionally as well and we know that VNC works without security config as that is how devstack deploys it by default.\n\n2.2.) Our config doc suggests that the vencrypt auth scheme can only be enabled if client key and cert are also set https://docs.openstack.org/nova/latest/configuration/config.html#vnc.auth_schemes\nSimilarly our vnc secu doc says that you have to do it https://docs.openstack.org/nova/2025.1/admin/remote-console-access.html#novnc-proxy-server-configuration\nSo this is not a code bug if this code fails due to missing files but a configuration issue.\n\n2.3.) If you look at the how this class is used in https://github.com/openstack/nova/blob/cfd5474c6438ad7cdb553357a37df5f2150d37ed/nova/console/rfb/auths.py#L28-L49 then you see that it is only loaded into the codepath if vencrypt is requested in the configuration. So our docs  in 2.2 is consistent with the code.\n\n3) **The suggested fix would only make the situation worse.** Give all the above if the VeCrypt is requested in the config but the keys are not configured (so we have an incomplete configuration) it is better to fail with a type error and preventing the connection setup than trying to hide the issue by skipping some of the steps setting up a proper connection with SSL. \n\nbottom line: I sense an LLM made this review as it is very narrow focused (and there is even an emdash there :D ). And the human in the loop did not verify the claim, and even more importantly did not considered the security implications of the suggested fix.\nIf you would like to make our config handling better, that can be done by making the novncproxy service validate its config at startup and fail with a nice error message if it finds an inconsistent configuration. But that is an independent work from this change.","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"95ddcb3b29e11f99d7902b5626c2664f8adb6afc","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            ssl_ctx \u003d ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)"},{"line_number":147,"context_line":"            ssl_ctx.load_cert_chain("},{"line_number":148,"context_line":"                keyfile\u003dclient_key,"},{"line_number":149,"context_line":"                certfile\u003dclient_cert)"},{"line_number":150,"context_line":"            ssl_ctx.load_verify_locations(cafile\u003dCONF.vnc.vencrypt_ca_certs)"}],"source_content_type":"text/x-python","patch_set":19,"id":"69f4a759_a5ecfe78","line":147,"in_reply_to":"c6e5bcd3_ff1ac4d3","updated":"2026-04-10 10:33:55.000000000","message":"Yeah, thanks for the pointers, it helped me to understand all the indirections. Even a 12-yo Nova contributor wasn\u0027t knowing about this, so of course LLM fail 😊","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f1ad6375c4be109b26666e624208462ca79d7","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                keyfile\u003dclient_key,"},{"line_number":149,"context_line":"                certfile\u003dclient_cert)"},{"line_number":150,"context_line":"            ssl_ctx.load_verify_locations(cafile\u003dCONF.vnc.vencrypt_ca_certs)"},{"line_number":151,"context_line":"            ssl_ctx.verify_mode \u003d ssl.CERT_REQUIRED"},{"line_number":152,"context_line":"            ssl_ctx.check_hostname \u003d False"},{"line_number":153,"context_line":"            wrapped_sock \u003d ssl_ctx.wrap_socket("},{"line_number":154,"context_line":"                compute_sock,"}],"source_content_type":"text/x-python","patch_set":22,"id":"8609240e_c3143bd3","line":151,"updated":"2026-04-10 10:42:38.000000000","message":"nit: when looking https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS_CLIENT, it says it defaults to CERT_REQUIRED so we don\u0027t really need it but meh","commit_id":"5cb77577a53d88cef16a6224615aecbb459b1a4d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"065ea2769bdfbfc7436483b6b67f63ae589cb969","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                keyfile\u003dclient_key,"},{"line_number":149,"context_line":"                certfile\u003dclient_cert)"},{"line_number":150,"context_line":"            ssl_ctx.load_verify_locations(cafile\u003dCONF.vnc.vencrypt_ca_certs)"},{"line_number":151,"context_line":"            ssl_ctx.verify_mode \u003d ssl.CERT_REQUIRED"},{"line_number":152,"context_line":"            ssl_ctx.check_hostname \u003d False"},{"line_number":153,"context_line":"            wrapped_sock \u003d ssl_ctx.wrap_socket("},{"line_number":154,"context_line":"                compute_sock,"}],"source_content_type":"text/x-python","patch_set":22,"id":"67f8ad1d_48a879b2","line":151,"in_reply_to":"8609240e_c3143bd3","updated":"2026-04-13 07:55:36.000000000","message":"Acknowledged","commit_id":"5cb77577a53d88cef16a6224615aecbb459b1a4d"}],"threading_unit_test_excludes.txt":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"57355d37b68f104f40397cd9fbbe943758c182ab","unresolved":true,"context_lines":[{"line_number":7,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_fail_snapshots"},{"line_number":8,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_pending_resize"},{"line_number":9,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_reverting_resize"},{"line_number":10,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_destroy_volume"},{"line_number":11,"context_line":"nova.tests.unit.test_context.ContextTestCase.test_scatter_gather_cells_queued_task_cancelled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Wait until eventlet.Event is removed by https://review.opendev.org/c/openstack/nova/+/949754"}],"source_content_type":"text/plain","patch_set":19,"id":"b78521da_7a10c990","line":10,"updated":"2026-03-30 14:59:54.000000000","message":"@ksambor@redhat.com Is it a rebase artifact? I think on master this is gone. Also the above 3 test case specific to VNC supposed to be reenabled by this patch, see PS18.","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6db9f31b1f11f3c28e8ad897f3f74f8f81cccea3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_fail_snapshots"},{"line_number":8,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_pending_resize"},{"line_number":9,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_reverting_resize"},{"line_number":10,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_destroy_volume"},{"line_number":11,"context_line":"nova.tests.unit.test_context.ContextTestCase.test_scatter_gather_cells_queued_task_cancelled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Wait until eventlet.Event is removed by https://review.opendev.org/c/openstack/nova/+/949754"}],"source_content_type":"text/plain","patch_set":19,"id":"e129b584_b470099f","line":10,"in_reply_to":"56e51eba_c533d795","updated":"2026-04-02 14:23:55.000000000","message":"yeah this rebase now looks good","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"687e42dda0aa7e240b66eab83114b71f6d37ba28","unresolved":false,"context_lines":[{"line_number":7,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_fail_snapshots"},{"line_number":8,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_pending_resize"},{"line_number":9,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_reverting_resize"},{"line_number":10,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_destroy_volume"},{"line_number":11,"context_line":"nova.tests.unit.test_context.ContextTestCase.test_scatter_gather_cells_queued_task_cancelled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Wait until eventlet.Event is removed by https://review.opendev.org/c/openstack/nova/+/949754"}],"source_content_type":"text/plain","patch_set":19,"id":"56e51eba_c533d795","line":10,"in_reply_to":"7bcd23e4_1609060e","updated":"2026-04-02 10:06:04.000000000","message":"Done","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"93c9fa4e2d09fcb0affa277b68e0b1c6291fa3ef","unresolved":true,"context_lines":[{"line_number":7,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_fail_snapshots"},{"line_number":8,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_pending_resize"},{"line_number":9,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_reverting_resize"},{"line_number":10,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_destroy_volume"},{"line_number":11,"context_line":"nova.tests.unit.test_context.ContextTestCase.test_scatter_gather_cells_queued_task_cancelled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Wait until eventlet.Event is removed by https://review.opendev.org/c/openstack/nova/+/949754"}],"source_content_type":"text/plain","patch_set":19,"id":"ee5478a5_b9c46c57","line":10,"in_reply_to":"b78521da_7a10c990","updated":"2026-04-01 13:56:15.000000000","message":"Yes that was artifact of rebase","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c84e419eb2e29a8806dcca1c0082b9c7b292307e","unresolved":true,"context_lines":[{"line_number":7,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_fail_snapshots"},{"line_number":8,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_pending_resize"},{"line_number":9,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_cleanup_volumes_reverting_resize"},{"line_number":10,"context_line":"nova.tests.unit.storage.test_rbd.RbdTestCase.test_destroy_volume"},{"line_number":11,"context_line":"nova.tests.unit.test_context.ContextTestCase.test_scatter_gather_cells_queued_task_cancelled"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Wait until eventlet.Event is removed by https://review.opendev.org/c/openstack/nova/+/949754"}],"source_content_type":"text/plain","patch_set":19,"id":"7bcd23e4_1609060e","line":10,"in_reply_to":"ee5478a5_b9c46c57","updated":"2026-04-02 08:01:25.000000000","message":"It is still different from PS18 https://review.opendev.org/c/openstack/nova/+/955915/18/threading_unit_test_excludes.txt\n\nI\u0027m pretty sure we can reenable those unit tests with this patch shown in PS18.\n\nAlso when you fix this please rebase on master once more as we landed the ironic job rename fix in https://review.opendev.org/c/openstack/nova/+/983080","commit_id":"4c7070b3d167cf762677fef8d5bb461b02c3d5b3"}]}
