)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"47399a2b433bd38faaed55624aa9737421125fd9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4dbda435_4c431b37","updated":"2025-01-14 00:58:04.000000000","message":"The current code only works with \"Connexion 2.x\" and its dependencies have lower versions compared with the upper constraints.\n- werkzeug\n- Flask\n- openapi_schema_validator\n- jsonschema\n\nStarting from Connexion 3.0, the ASGI interface is adopted instead of WSGI.  \n    - References: https://connexion.readthedocs.io/en/stable/v3.html\n\nHowever, `eventlet` only supports WSGI servers. \n- As long as we use evenlet, switching to Connexion 3.0 is difficult.\n- we might need to replace `eventlet` with other alternatives that work with Connexion 3.0","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"327b53096fd7c5e8c97d83534ec69e1f9b866bab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"489fb1e9_4ec1e9c9","updated":"2025-01-07 07:58:43.000000000","message":"This current code version doesn\u0027t work with the current upper-constraints.txt\n\nit has only been tested with the following versions: \n- jsonschema \u003c\u003d 4.19.0\n- flask \u003c 2.2.3\n- Werkzeug \u003d\u003d 2.2.3\n\nwe need to resolve the version conflicts.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"808949bb11f3cfe47943a8d73b0f497026b6d188","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"56adb897_12dd6ad1","in_reply_to":"4dbda435_4c431b37","updated":"2025-02-10 03:09:23.000000000","message":"In my opinion, there might be three solutions:\n1. Lower the versions of the related packages in upper constraints (less feasible as we move forward).\n2. Replace Eventlet used in the HTTP driver with other alternatives that work with ASGI.\n3. Replace Connexion 3.0 with other alternatives that support WSGI.\nI would appreciate any feedback or suggestions on these patches and potential solutions.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"f0bc4296c5189bc463ffe234ce77b04ed335ab20","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fdeac355_0c73daa9","in_reply_to":"56adb897_12dd6ad1","updated":"2025-02-11 07:52:14.000000000","message":"There is a current work ongoing to get rid of eventlet (see eventlet-removal here: https://wiki.openstack.org/wiki/Eventlet-removal).\nAs your patch seems to require this to be finished, I would recommand to either wait or try to help in the removal work.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"0d7cc9dcac701d9824a4c6396d1738983c8b5341","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fda55f50_bc94f044","in_reply_to":"e36154ba_921cd572","updated":"2025-03-24 06:29:20.000000000","message":"The dependency conflicts have been completely resolved by re-implementing http-server and client solely using flask instead of the auto-generated code based on connexion[flask].\n\nTherefore, these http-driver patches do not depend on the eventlet-removal work anymore and can be handled independently.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2aa726bc3721d8fd6f8af90d0bf8763ccd90762a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e36154ba_921cd572","in_reply_to":"fdeac355_0c73daa9","updated":"2025-02-14 08:45:49.000000000","message":"Thank you for the feedback and suggestions! I will try catching up on the progress of the eventlet removal work. Once an alternative to Eventlet has been decided, we can begin integrating it into our patches.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"062492bfe01a4259d99f2b0ac306ad5afa194bba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"04c68d35_41ea9a3c","updated":"2025-04-09 09:29:08.000000000","message":"Hello Xiang,\n\nThanks for your work and your proposal.\nAs Arnaud said early in these comments, Eventlet is going up deprecated and planned for removal.\nYour patch rely actively on Eventlet, I made some inline comments.\n\nIf you want to implement Async behavior, I\u0027d suggest you to take a look to the alternatives proposed here https://removal.eventlet.org/guide/getting-started/\n\nYou can either propose an architecture based on AsyncIO or threading.\nYou can also inspire from the work made on oslo.db to implement an async driver based on asyncio for oslo.db https://opendev.org/openstack/oslo.db/commit/7cfe7fc693894a3488f9c45e35250a458b93cb63\n\nEnd users would be able to decide which driver to use.\nHopefully these elements will help you during your implementation journey.","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"7f3599fe9e364071c51e02af960d066aa66acc12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2940f20d_717293ec","updated":"2025-04-04 01:38:44.000000000","message":"recheck","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"3d51d6aa74f2e81de9716e7272afb4aa49861f81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9b6586d7_43d50945","in_reply_to":"04c68d35_41ea9a3c","updated":"2025-04-11 05:29:13.000000000","message":"Thank you so much for the comments and suggestions!\nThis current version indeed heavily relies on eventlet. \nLet me take some time to see if there is an easy way to get rid of it and how to proceed.","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"4815ecf86d86a5612e71ca4563b6ae38d9841d59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1f1a6d9a_fdcd3dd4","in_reply_to":"9b6586d7_43d50945","updated":"2025-05-29 09:01:04.000000000","message":"Since this work of removing eventlet on our side is taking a long time, I wonder if it is possible for the team to review and merge my first two patches that do not depend on Eventlet. This would allow us to make some progress in the meantime. \n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/912499/28\n[2] https://review.opendev.org/c/openstack/oslo.messaging/+/914840/27","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"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":"22a605a492bb476c55a93b79b96dd1b8efb1bbaa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"26bd7542_8d3dfaa3","updated":"2025-08-15 22:34:34.000000000","message":"Just as a note, https://github.com/cherrypy/cheroot was adopted by Ironic to replace our eventlet wsgi setup, because the interfaces are similar. You may be able to use this library to help get migrated off eventlet with this patchset.","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"97c99c28d41d5b2f714b0265aca65b7dd7dfe940","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4c4ea0a5_fe501032","in_reply_to":"26bd7542_8d3dfaa3","updated":"2025-09-11 08:48:18.000000000","message":"Thank you so much for this information! I am currently trying to adopt cheroot in the next patch","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9efc6bf8_354bfc3b","in_reply_to":"44372074_e39ed0e9","updated":"2026-01-08 16:40:55.000000000","message":"Done","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"67b29e686fe1514e0a59b3c60c749953a1ef176a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"44372074_e39ed0e9","in_reply_to":"4c4ea0a5_fe501032","updated":"2025-09-18 09:34:58.000000000","message":"Thank you for your suggestion earlier. I\u0027ve successfully replaced eventlet with cheroot in my latest patch:\n- https://review.opendev.org/c/openstack/oslo.messaging/+/961583/3","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"fdcb52f5_607e1e1f","updated":"2025-09-27 11:02:59.000000000","message":"As noted by Arnaud in a different change we definitely need a documentation (which can be short) to explian how this service is expected to be deployed.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"0c831fa6aacf932dbf126a500dd8ec43d7ed7d6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4dd0e560_b709b624","in_reply_to":"fdcb52f5_607e1e1f","updated":"2026-01-19 15:08:04.000000000","message":"As discussed, i\u0027ve added the documentation in my latest patch [1].\nit would be great if you can take a look and let me know if any questions or concerns. I hope that concludes this series of patches.\n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/973843","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}],"oslo_messaging/_drivers/http_driver/broadcaster.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"062492bfe01a4259d99f2b0ac306ad5afa194bba","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"c311310b_8c7eaaf6","line":17,"updated":"2025-04-09 09:29:08.000000000","message":"I do not think we want libraries (in general) deciding if we want to monkey patch the env.\nIf you apply the monkey patching at the library level, it will green all the env and if a service explicitly decided to not use eventlet, it will end by becoming an eventlet one...\n\nBy example Octavia banned Eventlet usages from their environment and they use oslo.messaging, so if they decide to use this driver, they will end by being greened by Eventlet without having a chance to disable Eventlet.\n\nhttps://opendev.org/openstack/octavia/search?q\u003doslo_messaging","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7933c331_5d37a5bf","line":17,"in_reply_to":"c311310b_8c7eaaf6","updated":"2026-01-08 16:40:55.000000000","message":"Thank you, and I agree. This is indeed a problem. \nSince I completely removed the dependency on eventlet in my later patch [1], this shouldn\u0027t be a concern anymore. \n\nI’ll also do a rebase to eliminate all the eventlet-dependent implementations in (#1~#5) patches, instead of replacing them later in a separate patch (#6).\n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/961583/16","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"}],"oslo_messaging/_drivers/http_driver/flask/app/fanout_handler.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"062492bfe01a4259d99f2b0ac306ad5afa194bba","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"06026ca2_5011821d","line":17,"updated":"2025-04-09 09:29:08.000000000","message":"Same think here.","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"946c13b3_90b79843","line":17,"in_reply_to":"06026ca2_5011821d","updated":"2026-01-08 16:40:55.000000000","message":"same above","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    def initiate_fanout(self, fanout_message):"},{"line_number":46,"context_line":"        \"\"\"Start the fanout process in a separate thread.\"\"\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":16,"id":"f95fceaa_7929fbd1","line":48,"range":{"start_line":48,"start_character":28,"end_line":48,"end_character":44},"updated":"2025-09-27 11:02:59.000000000","message":"Do we need some sort of thread pool here ? This may spawn threads without any limit.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def initiate_fanout(self, fanout_message):"},{"line_number":46,"context_line":"        \"\"\"Start the fanout process in a separate thread.\"\"\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7568d48c_7ba8e581","line":48,"range":{"start_line":48,"start_character":28,"end_line":48,"end_character":44},"in_reply_to":"f95fceaa_7929fbd1","updated":"2026-01-08 16:40:55.000000000","message":"I agree. I’ve just introduced a new option called max_concurrent_fanouts for this purpose.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"},{"line_number":52,"context_line":"            LOG.error(\u0027Fanout initiation failed with %s. msg_id: %s\u0027,"},{"line_number":53,"context_line":"                      str(err), fanout_message[\u0027msg_id\u0027])"},{"line_number":54,"context_line":"        return None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _process_fanout(self, fanout_message):"}],"source_content_type":"text/x-python","patch_set":16,"id":"04bb7f16_ce06928e","line":53,"range":{"start_line":51,"start_character":32,"end_line":53,"end_character":57},"updated":"2025-09-27 11:02:59.000000000","message":"We should raise the exception here so that an error is returned. This apparently indicates that the server can\u0027t process the request.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"},{"line_number":52,"context_line":"            LOG.error(\u0027Fanout initiation failed with %s. msg_id: %s\u0027,"},{"line_number":53,"context_line":"                      str(err), fanout_message[\u0027msg_id\u0027])"},{"line_number":54,"context_line":"        return None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _process_fanout(self, fanout_message):"}],"source_content_type":"text/x-python","patch_set":16,"id":"192a6466_73013ec2","line":53,"range":{"start_line":51,"start_character":32,"end_line":53,"end_character":57},"in_reply_to":"04bb7f16_ce06928e","updated":"2026-01-08 16:40:55.000000000","message":"great idea! fixed.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}],"oslo_messaging/_drivers/http_driver/options.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d215d3a89101df45f139db3a943e5c11a8c3397a","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def register_broadcaster_opts(conf):"},{"line_number":140,"context_line":"    bc_opt_group \u003d cfg.OptGroup(name\u003d\u0027http_broadcaster_opts\u0027,"},{"line_number":141,"context_line":"                                title\u003d\u0027HTTP broadcaster options\u0027)"},{"line_number":142,"context_line":"    conf.register_group(bc_opt_group)"},{"line_number":143,"context_line":"    conf.register_opts(broadcaster_opts, group\u003dbc_opt_group)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7329d358_b9905942","line":140,"range":{"start_line":140,"start_character":38,"end_line":140,"end_character":59},"updated":"2025-09-27 10:51:39.000000000","message":"This does not align with what is added to list_opts.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def register_broadcaster_opts(conf):"},{"line_number":140,"context_line":"    bc_opt_group \u003d cfg.OptGroup(name\u003d\u0027http_broadcaster_opts\u0027,"},{"line_number":141,"context_line":"                                title\u003d\u0027HTTP broadcaster options\u0027)"},{"line_number":142,"context_line":"    conf.register_group(bc_opt_group)"},{"line_number":143,"context_line":"    conf.register_opts(broadcaster_opts, group\u003dbc_opt_group)"}],"source_content_type":"text/x-python","patch_set":16,"id":"c859e50b_02ccc6bc","line":140,"range":{"start_line":140,"start_character":38,"end_line":140,"end_character":59},"in_reply_to":"7329d358_b9905942","updated":"2026-01-08 16:40:55.000000000","message":"sorry about this. i\u0027ve changed it to \"oslo_messaging_http_broadcaster\" which aligns with list_opts.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}],"pyproject.toml":[{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"a47e49344166d99f26ec267345e7ea988b835ab5","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[project.scripts]"},{"line_number":46,"context_line":"oslo-messaging-send-notification \u003d \"oslo_messaging.notify.notifier:_send_notification\""},{"line_number":47,"context_line":"broadcaster \u003d \"oslo_messaging._drivers.http_driver.broadcaster:main\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[project.entry-points.\"oslo.messaging.drivers\"]"},{"line_number":50,"context_line":"rabbit \u003d \"oslo_messaging._drivers.impl_rabbit:RabbitDriver\""}],"source_content_type":"text/x-toml","patch_set":16,"id":"a558bb4d_15a55caa","line":47,"updated":"2025-09-24 20:52:37.000000000","message":"IIUC this will create a script named \"broadcaster\". Should this script be prefixed with \"oslo-messaging-\" like the send-notification one?","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[project.scripts]"},{"line_number":46,"context_line":"oslo-messaging-send-notification \u003d \"oslo_messaging.notify.notifier:_send_notification\""},{"line_number":47,"context_line":"broadcaster \u003d \"oslo_messaging._drivers.http_driver.broadcaster:main\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[project.entry-points.\"oslo.messaging.drivers\"]"},{"line_number":50,"context_line":"rabbit \u003d \"oslo_messaging._drivers.impl_rabbit:RabbitDriver\""}],"source_content_type":"text/x-toml","patch_set":16,"id":"630b01f3_9defc6ea","line":47,"in_reply_to":"43d4c462_300b0e47","updated":"2026-01-08 16:40:55.000000000","message":"+1 renamed it to oslo-messaging-http-broadcaster","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[project.scripts]"},{"line_number":46,"context_line":"oslo-messaging-send-notification \u003d \"oslo_messaging.notify.notifier:_send_notification\""},{"line_number":47,"context_line":"broadcaster \u003d \"oslo_messaging._drivers.http_driver.broadcaster:main\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[project.entry-points.\"oslo.messaging.drivers\"]"},{"line_number":50,"context_line":"rabbit \u003d \"oslo_messaging._drivers.impl_rabbit:RabbitDriver\""}],"source_content_type":"text/x-toml","patch_set":16,"id":"43d4c462_300b0e47","line":47,"in_reply_to":"a558bb4d_15a55caa","updated":"2025-09-27 11:02:59.000000000","message":"+1  maybe oslo-messaging-http-broadcaster  ?","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}]}
