)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad326305ed9ebfa475d6b509808b601bb2ee75e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"df870872_e9dfdc40","updated":"2025-04-22 10:18:35.000000000","message":"Impressive work, kudos! I\u0027m happy to +2 once ready to review.","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0c8e939410d0a4f88a96b6dcf3af7ade53fc4af2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3815b613_1a90eff1","updated":"2025-04-21 15:23:20.000000000","message":"Reviewed, looks OK to me. Curious to see how things work with all the eventlet removed","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"42d143a0afb36bbf6e23faf0a0afa1bc758c4cec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7a594527_35adb0db","updated":"2025-04-22 14:33:47.000000000","message":"Depends On https://review.opendev.org/c/openstack/requirements/+/947727","commit_id":"15ff8e48240323894c861621a2ebca135baa7e32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e7dc6dca87b36374363b7671274970f2943bfcb9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9718198f_6c8d564c","updated":"2025-04-22 14:37:30.000000000","message":"Looking great, thank you! One suggestion inline, not critical.","commit_id":"15ff8e48240323894c861621a2ebca135baa7e32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9b803d3f9426c40fead5075f58c981acdf693cf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2f17aabb_45956134","updated":"2025-04-23 10:50:11.000000000","message":"recheck (getting new results)","commit_id":"b6c95fb5a0852c3c6305c0564d5753c72ad6d319"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4b4e7a2316205155bd6c16d8b52cf21455f5887f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fd781a70_bae515e0","updated":"2025-04-29 11:43:36.000000000","message":"We can keep iterating on the release note until the next release.\n\nI hope Jay won\u0027t mind me taking the honour of pulling the lever on this change :) Go go CID!","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0ecefd4ace9bf0568c59e565d66bc5a8394e256b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ff95e8e0_7c49a8c1","updated":"2025-04-24 08:22:17.000000000","message":"thanks! great job :)\njust a couple of comments on the release note","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"}],"ironic_python_agent/agent.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0c8e939410d0a4f88a96b6dcf3af7ade53fc4af2","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        self.agent.set_agent_advertise_addr()"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        while self._run_next():"},{"line_number":108,"context_line":"            time.sleep(0)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _run_next(self):"},{"line_number":111,"context_line":"        # The logic here makes sure we don\u0027t wait exactly 5 seconds more or"}],"source_content_type":"text/x-python","patch_set":6,"id":"24070a7a_74435ad9","line":108,"updated":"2025-04-21 15:23:20.000000000","message":"This time.sleep(0) does nothing. We had an eventlet.sleep(0) in here before because it forced a greenthread switch; with no greenthreads; we don\u0027t need to switch.","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        self.agent.set_agent_advertise_addr()"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        while self._run_next():"},{"line_number":108,"context_line":"            time.sleep(0)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _run_next(self):"},{"line_number":111,"context_line":"        # The logic here makes sure we don\u0027t wait exactly 5 seconds more or"}],"source_content_type":"text/x-python","patch_set":6,"id":"a7730b9a_0f3fd468","line":108,"in_reply_to":"2169fcd4_f5c3d820","updated":"2025-04-24 14:11:34.000000000","message":"Done","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad326305ed9ebfa475d6b509808b601bb2ee75e6","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        self.agent.set_agent_advertise_addr()"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        while self._run_next():"},{"line_number":108,"context_line":"            time.sleep(0)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _run_next(self):"},{"line_number":111,"context_line":"        # The logic here makes sure we don\u0027t wait exactly 5 seconds more or"}],"source_content_type":"text/x-python","patch_set":6,"id":"2169fcd4_f5c3d820","line":108,"in_reply_to":"24070a7a_74435ad9","updated":"2025-04-22 10:18:35.000000000","message":"We probably need to increase the sleep to some small but non-zero value to avoid using too much CPU in this thread (like 0.1 used below).","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"}],"ironic_python_agent/api/app.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad326305ed9ebfa475d6b509808b601bb2ee75e6","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            use_tls \u003d self._conf.listen_tls"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        ssl_group \u003d getattr(self._conf, \u0027ssl\u0027, None)"},{"line_number":139,"context_line":"        self.tls_cert_file \u003d getattr(ssl_group, \u0027cert_file\u0027, tls_cert_file)"},{"line_number":140,"context_line":"        self.tls_key_file \u003d getattr(ssl_group, \u0027key_file\u0027, tls_key_file)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"c46b7b94_ac04dec5","line":138,"updated":"2025-04-22 10:18:35.000000000","message":"The code on lines 132-133 relies on CONF.ssl existing, you might want to change it.","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad326305ed9ebfa475d6b509808b601bb2ee75e6","unresolved":true,"context_lines":[{"line_number":136,"context_line":"            use_tls \u003d self._conf.listen_tls"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        ssl_group \u003d getattr(self._conf, \u0027ssl\u0027, None)"},{"line_number":139,"context_line":"        self.tls_cert_file \u003d getattr(ssl_group, \u0027cert_file\u0027, tls_cert_file)"},{"line_number":140,"context_line":"        self.tls_key_file \u003d getattr(ssl_group, \u0027key_file\u0027, tls_key_file)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        cherrypy.config.update({"}],"source_content_type":"text/x-python","patch_set":6,"id":"ed0cccfa_b5d10cb4","line":139,"updated":"2025-04-22 10:18:35.000000000","message":".. otherwise this logic is a bit upside down: you\u0027re using tls_cert_file as a default for the value that has been overridden with.. tls_cert_file!","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e3736b3a99da762441eb45097be7443f390a37fb","unresolved":true,"context_lines":[{"line_number":136,"context_line":"            use_tls \u003d self._conf.listen_tls"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        ssl_group \u003d getattr(self._conf, \u0027ssl\u0027, None)"},{"line_number":139,"context_line":"        self.tls_cert_file \u003d getattr(ssl_group, \u0027cert_file\u0027, tls_cert_file)"},{"line_number":140,"context_line":"        self.tls_key_file \u003d getattr(ssl_group, \u0027key_file\u0027, tls_key_file)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        cherrypy.config.update({"}],"source_content_type":"text/x-python","patch_set":6,"id":"142cf0a1_e1909eb1","line":139,"in_reply_to":"ed0cccfa_b5d10cb4","updated":"2025-04-22 11:48:54.000000000","message":"In the new revision, the logic is reversed. You need the arguments to take priority, so something like\n\n self.tls_cert_fiel \u003d tls_cert_file or getattr(...)","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"13d334774a90c80274e4452fe8f3ff767af6921a","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        ssl_group \u003d getattr(self._conf, \u0027ssl\u0027, None)"},{"line_number":139,"context_line":"        self.tls_cert_file \u003d getattr(ssl_group, \u0027cert_file\u0027, tls_cert_file)"},{"line_number":140,"context_line":"        self.tls_key_file \u003d getattr(ssl_group, \u0027key_file\u0027, tls_key_file)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        cherrypy.config.update({"},{"line_number":143,"context_line":"            \u0027server.socket_host\u0027: self.agent.listen_address.hostname,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fbf42ba0_0b8595cf","line":140,"updated":"2025-04-21 03:53:48.000000000","message":"https://github.com/openstack/oslo.service/blob/master/oslo_service/_options.py#L148\n\nsee also wsgi options in that same file (these don\u0027t all have to be migrated imho)\n\nThe SSL options, we should reimplement in IPA to give the same interface.","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad326305ed9ebfa475d6b509808b601bb2ee75e6","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        ssl_group \u003d getattr(self._conf, \u0027ssl\u0027, None)"},{"line_number":139,"context_line":"        self.tls_cert_file \u003d getattr(ssl_group, \u0027cert_file\u0027, tls_cert_file)"},{"line_number":140,"context_line":"        self.tls_key_file \u003d getattr(ssl_group, \u0027key_file\u0027, tls_key_file)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        cherrypy.config.update({"},{"line_number":143,"context_line":"            \u0027server.socket_host\u0027: self.agent.listen_address.hostname,"}],"source_content_type":"text/x-python","patch_set":6,"id":"591982f1_93987ccb","line":140,"in_reply_to":"fbf42ba0_0b8595cf","updated":"2025-04-22 10:18:35.000000000","message":"I agree, can be done in a follow-up though.","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ad326305ed9ebfa475d6b509808b601bb2ee75e6","unresolved":true,"context_lines":[{"line_number":154,"context_line":"                \u0027server.ssl_private_key\u0027: self.tls_key_file,"},{"line_number":155,"context_line":"            })"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        cherrypy.tree.graft(self, \u0027/\u0027)"},{"line_number":158,"context_line":"        cherrypy.engine.start()"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        LOG.info(\u0027Started API service on port %s\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9204b2ce_8eb38af8","line":157,"updated":"2025-04-22 10:18:35.000000000","message":"So nice of them to provide this feature.","commit_id":"72a4ce975f12895b82fb874d93f143a7769648db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e3736b3a99da762441eb45097be7443f390a37fb","unresolved":true,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        server_kwargs \u003d {\u0027bind_addr\u0027: bind_addr, \u0027wsgi_app\u0027: self,"},{"line_number":141,"context_line":"                         \u0027timeout\u0027: 60, \u0027server_name\u0027: \u0027ironic-python-agent\u0027,"},{"line_number":142,"context_line":"                         \u0027request_queue_size\u0027: 10}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        server \u003d wsgi.Server(**server_kwargs)"},{"line_number":145,"context_line":"        if self.tls_cert_file and self.tls_key_file:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6eebfd9b_ca4a3a54","line":142,"updated":"2025-04-22 11:48:54.000000000","message":"Why change timeout and requested_queue_size? I\u0027d start with the defaults and only adjust them if we find a need to.","commit_id":"7a617329240c4c842c856c788f2f7e4775766ee1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        server_kwargs \u003d {\u0027bind_addr\u0027: bind_addr, \u0027wsgi_app\u0027: self,"},{"line_number":141,"context_line":"                         \u0027timeout\u0027: 60, \u0027server_name\u0027: \u0027ironic-python-agent\u0027,"},{"line_number":142,"context_line":"                         \u0027request_queue_size\u0027: 10}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        server \u003d wsgi.Server(**server_kwargs)"},{"line_number":145,"context_line":"        if self.tls_cert_file and self.tls_key_file:"}],"source_content_type":"text/x-python","patch_set":7,"id":"634000d6_b547c16d","line":142,"in_reply_to":"6eebfd9b_ca4a3a54","updated":"2025-04-24 14:11:34.000000000","message":"Done","commit_id":"7a617329240c4c842c856c788f2f7e4775766ee1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e3736b3a99da762441eb45097be7443f390a37fb","unresolved":true,"context_lines":[{"line_number":141,"context_line":"                         \u0027timeout\u0027: 60, \u0027server_name\u0027: \u0027ironic-python-agent\u0027,"},{"line_number":142,"context_line":"                         \u0027request_queue_size\u0027: 10}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        server \u003d wsgi.Server(**server_kwargs)"},{"line_number":145,"context_line":"        if self.tls_cert_file and self.tls_key_file:"},{"line_number":146,"context_line":"            server.ssl_adapter \u003d builtin.BuiltinSSLAdapter("},{"line_number":147,"context_line":"                certificate\u003dself.tls_cert_file,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a4288632_820d97bd","line":144,"updated":"2025-04-22 11:48:54.000000000","message":"I\u0027d prefer the arguments to be passed directly, not via an intermediate dict","commit_id":"7a617329240c4c842c856c788f2f7e4775766ee1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                         \u0027timeout\u0027: 60, \u0027server_name\u0027: \u0027ironic-python-agent\u0027,"},{"line_number":142,"context_line":"                         \u0027request_queue_size\u0027: 10}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        server \u003d wsgi.Server(**server_kwargs)"},{"line_number":145,"context_line":"        if self.tls_cert_file and self.tls_key_file:"},{"line_number":146,"context_line":"            server.ssl_adapter \u003d builtin.BuiltinSSLAdapter("},{"line_number":147,"context_line":"                certificate\u003dself.tls_cert_file,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a7d703a6_d1c5cf55","line":144,"in_reply_to":"a4288632_820d97bd","updated":"2025-04-24 14:11:34.000000000","message":"Done","commit_id":"7a617329240c4c842c856c788f2f7e4775766ee1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e3736b3a99da762441eb45097be7443f390a37fb","unresolved":true,"context_lines":[{"line_number":149,"context_line":"            )"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        self.server \u003d server"},{"line_number":152,"context_line":"        self.server.start()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        LOG.info(\u0027Started API service on port %s\u0027,"},{"line_number":155,"context_line":"                 self.agent.listen_address.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b8a48cb8_b27278f8","line":152,"updated":"2025-04-22 11:48:54.000000000","message":"start() will block, see the example here https://cheroot.cherrypy.dev/en/latest/pkg/cheroot.server/","commit_id":"7a617329240c4c842c856c788f2f7e4775766ee1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            )"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        self.server \u003d server"},{"line_number":152,"context_line":"        self.server.start()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        LOG.info(\u0027Started API service on port %s\u0027,"},{"line_number":155,"context_line":"                 self.agent.listen_address.port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"92ecc85e_9250497f","line":152,"in_reply_to":"b8a48cb8_b27278f8","updated":"2025-04-24 14:11:34.000000000","message":"Done","commit_id":"7a617329240c4c842c856c788f2f7e4775766ee1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e7dc6dca87b36374363b7671274970f2943bfcb9","unresolved":true,"context_lines":[{"line_number":164,"context_line":"        LOG.debug(\"Stopping the API service.\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        if self.server:"},{"line_number":167,"context_line":"            self.server.stop()"},{"line_number":168,"context_line":"        self.server \u003d None"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        LOG.info(\u0027Stopped API service on port %s\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5c00c9f7_072b5701","line":167,"updated":"2025-04-22 14:37:30.000000000","message":"wdyt about also doing\n\n self.server_thread.join()\n \nto make sure it has actually stopped?","commit_id":"15ff8e48240323894c861621a2ebca135baa7e32"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        LOG.debug(\"Stopping the API service.\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        if self.server:"},{"line_number":167,"context_line":"            self.server.stop()"},{"line_number":168,"context_line":"        self.server \u003d None"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        LOG.info(\u0027Stopped API service on port %s\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"555897ed_76d5a849","line":167,"in_reply_to":"5c00c9f7_072b5701","updated":"2025-04-24 14:11:34.000000000","message":"Done","commit_id":"15ff8e48240323894c861621a2ebca135baa7e32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4b4e7a2316205155bd6c16d8b52cf21455f5887f","unresolved":true,"context_lines":[{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import threading"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cheroot.ssl import builtin"},{"line_number":19,"context_line":"from cheroot import wsgi"},{"line_number":20,"context_line":"from oslo_log import log"},{"line_number":21,"context_line":"import werkzeug"}],"source_content_type":"text/x-python","patch_set":13,"id":"7992a355_3a724af9","line":18,"updated":"2025-04-29 11:43:36.000000000","message":"if you do a follow-up: it would be good to rename this import to something clearer like cheroot_ssl","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"}],"releasenotes/notes/eventlet-removal-1bd8c6c2d5f8a765.yaml":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0ecefd4ace9bf0568c59e565d66bc5a8394e256b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"fixes:"},{"line_number":2,"context_line":"  - |"},{"line_number":3,"context_line":"    Eventlet support in OpenStack is deprecated, and the oslo libraries used"},{"line_number":4,"context_line":"    by Ironic Python Agent is deprecating support for eventlet in 2026.2."},{"line_number":5,"context_line":"    This change removes the use of eventlet directly and ensures none of our"},{"line_number":6,"context_line":"    libraries are using eventlet-based code."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"1d55740b_032b426b","line":4,"range":{"start_line":4,"start_character":30,"end_line":4,"end_character":41},"updated":"2025-04-24 08:22:17.000000000","message":"removing, it\u0027s deprecated in 2025.2","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"}],"requirements.txt":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ab49261839eb34570c4691370ae671645cf8e45a","unresolved":true,"context_lines":[{"line_number":15,"context_line":"cryptography\u003e\u003d2.3 # BSD/Apache-2.0"},{"line_number":16,"context_line":"tooz\u003e\u003d2.7.2 # Apache-2.0"},{"line_number":17,"context_line":"zeroconf\u003e\u003d0.24.0 # LGPL"},{"line_number":18,"context_line":"cheroot\u003d\u003d10.0.1 # BSD"}],"source_content_type":"text/plain","patch_set":11,"id":"5bc90597_2dc53932","line":18,"updated":"2025-04-22 15:19:23.000000000","message":"Has to be \u003e\u003d, not \u003d\u003d","commit_id":"44437de3923672be07111125efb9bf20643dc352"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":false,"context_lines":[{"line_number":15,"context_line":"cryptography\u003e\u003d2.3 # BSD/Apache-2.0"},{"line_number":16,"context_line":"tooz\u003e\u003d2.7.2 # Apache-2.0"},{"line_number":17,"context_line":"zeroconf\u003e\u003d0.24.0 # LGPL"},{"line_number":18,"context_line":"cheroot\u003d\u003d10.0.1 # BSD"}],"source_content_type":"text/plain","patch_set":11,"id":"7402f1fa_b2565f44","line":18,"in_reply_to":"5bc90597_2dc53932","updated":"2025-04-24 14:11:34.000000000","message":"Done","commit_id":"44437de3923672be07111125efb9bf20643dc352"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0ecefd4ace9bf0568c59e565d66bc5a8394e256b","unresolved":true,"context_lines":[{"line_number":2,"context_line":"oslo.config\u003e\u003d9.7.1 # Apache-2.0"},{"line_number":3,"context_line":"oslo.concurrency\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":4,"context_line":"oslo.log\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":5,"context_line":"oslo.service\u003e\u003d4.1.1 # Apache-2.0"},{"line_number":6,"context_line":"oslo.utils\u003e\u003d8.2.0 # Apache-2.0"},{"line_number":7,"context_line":"Pint\u003e\u003d0.5 # BSD"},{"line_number":8,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":13,"id":"a7c6785b_cdbbfba5","line":5,"updated":"2025-04-24 08:22:17.000000000","message":"while it\u0027s true that we don\u0027t require eventlet anymore, we probably need to clarify in the release note that at least oslo.service still does, as it was done in the commit message","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80e6b6b652b362e6de97a5922d2da41626285b93","unresolved":true,"context_lines":[{"line_number":2,"context_line":"oslo.config\u003e\u003d9.7.1 # Apache-2.0"},{"line_number":3,"context_line":"oslo.concurrency\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":4,"context_line":"oslo.log\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":5,"context_line":"oslo.service\u003e\u003d4.1.1 # Apache-2.0"},{"line_number":6,"context_line":"oslo.utils\u003e\u003d8.2.0 # Apache-2.0"},{"line_number":7,"context_line":"Pint\u003e\u003d0.5 # BSD"},{"line_number":8,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":13,"id":"a9f2a8fb_a2a57f07","line":5,"in_reply_to":"a7c6785b_cdbbfba5","updated":"2025-04-24 14:11:34.000000000","message":"Kinda a hair to split here?\n\noslo.service has a requirement (requirements.txt) which installs eventlet. If eventlet is not installed, it gracefully handles it in the modules IPA is using. I am OK with updating the note or not, just wanted to make sure you understood the state :D","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"dd08dbd25cad4c3ee0f00bab722729d025637ad0","unresolved":true,"context_lines":[{"line_number":2,"context_line":"oslo.config\u003e\u003d9.7.1 # Apache-2.0"},{"line_number":3,"context_line":"oslo.concurrency\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":4,"context_line":"oslo.log\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":5,"context_line":"oslo.service\u003e\u003d4.1.1 # Apache-2.0"},{"line_number":6,"context_line":"oslo.utils\u003e\u003d8.2.0 # Apache-2.0"},{"line_number":7,"context_line":"Pint\u003e\u003d0.5 # BSD"},{"line_number":8,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":13,"id":"6b640332_b145b24a","line":5,"in_reply_to":"a9f2a8fb_a2a57f07","updated":"2025-04-25 15:01:40.000000000","message":"I understand the situation, I just don\u0027t want to give false hopes to people, me included :D\nhonestly I haven\u0027t seen that https://opendev.org/openstack/oslo.service/commit/8371e186778ecd79e27da655bcab91d621d05c95 was included in 4.1.1, so I\u0027m good here","commit_id":"c03021fee25f47ccd2c04e0d91341cd829c9e600"}]}
