)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2caff97fa3338736c839f9f3d3ff2dfb8c5b3547","unresolved":true,"context_lines":[{"line_number":21,"context_line":"The OpenAPI configuration file that outlines the API specifications"},{"line_number":22,"context_line":"is included as `openapi.yaml`."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Partially-implements: blueprint oslo-http-driver"},{"line_number":25,"context_line":"Change-Id: Ic076f2b83cb6f6aa074ebedc3103463ee0e66667"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"73ac2753_1323ba01","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":48},"updated":"2024-11-24 08:34:14.000000000","message":"I\u0027m wondering if any implementation work is left or do you intend that doc update is still needs to be done?","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"The OpenAPI configuration file that outlines the API specifications"},{"line_number":22,"context_line":"is included as `openapi.yaml`."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Partially-implements: blueprint oslo-http-driver"},{"line_number":25,"context_line":"Change-Id: Ic076f2b83cb6f6aa074ebedc3103463ee0e66667"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"83982131_85b265a4","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":48},"in_reply_to":"64a20f09_a373f3de","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"1039dcd93e165d89f8e1a09650d0771de87bbf26","unresolved":true,"context_lines":[{"line_number":21,"context_line":"The OpenAPI configuration file that outlines the API specifications"},{"line_number":22,"context_line":"is included as `openapi.yaml`."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Partially-implements: blueprint oslo-http-driver"},{"line_number":25,"context_line":"Change-Id: Ic076f2b83cb6f6aa074ebedc3103463ee0e66667"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"64a20f09_a373f3de","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":48},"in_reply_to":"73ac2753_1323ba01","updated":"2024-11-25 08:59:09.000000000","message":"Approximately there are two more patches left to be submitted.  \n- Total: 5\n- Submitted: 3\nOriginally I planned to submit them after the first 3 are merged because the code review could change the upcoming implementation. \nHowever, I will just submit them anyway in a week or two for simplicity and efficiency.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"305dcab099b423faefb7694e40b73561142cc247","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"34aeb6b1_135ed288","updated":"2024-07-05 09:18:32.000000000","message":"Hi, what about this implementation now? Just test this, it can not work.","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"a8163c4e_59d2f7e5","updated":"2024-11-23 06:24:23.000000000","message":"Please also add a release note to explain the new driver.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2caff97fa3338736c839f9f3d3ff2dfb8c5b3547","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4e51bd42_6e4fc0b8","updated":"2024-11-24 08:34:14.000000000","message":"We also have to add the new section (in doc/source/admin/) to explain the new driver.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"9d4f73d18270e1754ba2eded0fad475b63c6d198","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"efb927df_b75fd0df","in_reply_to":"38573a6c_67459ad6","updated":"2026-01-19 14:54:44.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"f6fd87b424b9ad871fca256fcfc3cdedff12be99","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"38573a6c_67459ad6","in_reply_to":"4e51bd42_6e4fc0b8","updated":"2024-12-27 11:30:31.000000000","message":"Sounds great! I have one final patch for broadcaster/fanout left. \nAfter that, i will update the docs and specs all together.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"036078b617405aff10df3bb0a94c5bd883269561","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"3b281a24_26cf0c7d","updated":"2024-11-29 07:50:28.000000000","message":"Is it possible to add a devstack plugin/lib/script to enable oslo-http-driver and start an openstack cluster?","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5ab8ffd71ee20901783264553288f6b83e2c1453","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"5fe26520_37fcae6f","updated":"2025-04-09 16:22:19.000000000","message":"I\u0027ll take more time to actually go through the whole change but am leaving a few early comments so that they are not lost...","commit_id":"355dc9adf051abb6b2559ea1a7fed022deaaf96b"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fc7f743480e2c523b007e9cfb777d3a3e948b3a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"a1fcf0b5_41f5bd8f","updated":"2026-01-08 15:34:35.000000000","message":"recheck-failed","commit_id":"7da2e7c6415080a6e93c34e455de708b96147231"}],"doc/requirements.txt":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9bcb79e0867662ab75c0ac2b85fafc5167d3054c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"confluent-kafka\u003e\u003d0.11.6 # Apache-2.0"},{"line_number":8,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":9,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":10,"context_line":"Flask!\u003d0.11,\u003e\u003d1.0.2  # BSD"}],"source_content_type":"text/plain","patch_set":32,"id":"5f24f32e_aa8f7cbc","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":26},"updated":"2025-09-27 10:44:16.000000000","message":"This should be added as a extra dependency, too.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":7,"context_line":"confluent-kafka\u003e\u003d0.11.6 # Apache-2.0"},{"line_number":8,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":9,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":10,"context_line":"Flask!\u003d0.11,\u003e\u003d1.0.2  # BSD"}],"source_content_type":"text/plain","patch_set":32,"id":"ad42cf30_1d230fd1","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":26},"in_reply_to":"5f24f32e_aa8f7cbc","updated":"2026-01-06 15:53:52.000000000","message":"thank you so much for reviews! i\u0027ve addressed the dependencies and options related comments.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"}],"oslo_messaging/_drivers/http_driver/openapi/client/__init__.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __eq__(self, other) :"},{"line_number":30,"context_line":"        return vars(self) \u003d\u003d vars(other)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FanoutMessage:"},{"line_number":33,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":34,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf038ceb_21876ca7","line":31,"updated":"2024-11-23 06:24:23.000000000","message":"Add one more blank line","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __eq__(self, other) :"},{"line_number":30,"context_line":"        return vars(self) \u003d\u003d vars(other)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FanoutMessage:"},{"line_number":33,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":34,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":13,"id":"d0a201a4_bb1e3ada","line":31,"in_reply_to":"bf038ceb_21876ca7","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __eq__(self, other) :"},{"line_number":37,"context_line":"        return vars(self) \u003d\u003d vars(other)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class Configuration:"},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":41,"context_line":"        self.verify_ssl \u003d True"}],"source_content_type":"text/x-python","patch_set":13,"id":"84f82891_007048fa","line":38,"updated":"2024-11-23 06:24:23.000000000","message":"Add one more blank line","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __eq__(self, other) :"},{"line_number":37,"context_line":"        return vars(self) \u003d\u003d vars(other)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class Configuration:"},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":41,"context_line":"        self.verify_ssl \u003d True"}],"source_content_type":"text/x-python","patch_set":13,"id":"3e8f77b7_faafca8e","line":38,"in_reply_to":"84f82891_007048fa","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"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":"cb4bb5281da62f8b4d23b2e3954e7fea17ee895b","unresolved":true,"context_lines":[{"line_number":19,"context_line":"The actual implementation of the API service will be generated and added"},{"line_number":20,"context_line":"by OpenAPI. This module only contains placeholder classes and methods that"},{"line_number":21,"context_line":"are currently used by HTTP driver."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class RpcMessage:"}],"source_content_type":"text/x-python","patch_set":15,"id":"f997f58e_19e6a01f","line":22,"updated":"2024-11-25 21:57:23.000000000","message":"Just curious if this is going to use a blocking or nonblocking API. As alluded to in my comment further up the chain; I wonder if we\u0027ll be able to have one performant implementation on all types of threading/async setups.","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"ea9f0ee20da2a726f6e611e3804dd0ec7cc0e741","unresolved":true,"context_lines":[{"line_number":19,"context_line":"The actual implementation of the API service will be generated and added"},{"line_number":20,"context_line":"by OpenAPI. This module only contains placeholder classes and methods that"},{"line_number":21,"context_line":"are currently used by HTTP driver."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class RpcMessage:"}],"source_content_type":"text/x-python","patch_set":15,"id":"df1f51cf_7dfcfe5e","line":22,"in_reply_to":"26da7509_3ce8f050","updated":"2025-03-24 07:14:20.000000000","message":"The rest of the patches have been submitted and passed CI, please let me know if you have further concerns regarding this topic.","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":19,"context_line":"The actual implementation of the API service will be generated and added"},{"line_number":20,"context_line":"by OpenAPI. This module only contains placeholder classes and methods that"},{"line_number":21,"context_line":"are currently used by HTTP driver."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class RpcMessage:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7ff374ee_9421c908","line":22,"in_reply_to":"df1f51cf_7dfcfe5e","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a028c79cb5d4aa9d47f610e5cc1e576aa2c43dff","unresolved":true,"context_lines":[{"line_number":19,"context_line":"The actual implementation of the API service will be generated and added"},{"line_number":20,"context_line":"by OpenAPI. This module only contains placeholder classes and methods that"},{"line_number":21,"context_line":"are currently used by HTTP driver."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class RpcMessage:"}],"source_content_type":"text/x-python","patch_set":15,"id":"26da7509_3ce8f050","line":22,"in_reply_to":"f997f58e_19e6a01f","updated":"2024-11-29 02:50:56.000000000","message":"I think this is going to use a nonblocking API. Sorry I haven\u0027t pushed the rest of the code since I am still addressing comments in the current patches, but that part of the implementation will be pushed probably next week.","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"}],"oslo_messaging/_drivers/http_driver/openapi/openapi.yaml":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"d88aeabd43b60f85bbb57d883a6e89ce5c010e85","unresolved":true,"context_lines":[{"line_number":4,"context_line":"  title: HTTP_RPC"},{"line_number":5,"context_line":"  version: \"1.0\""},{"line_number":6,"context_line":"servers:"},{"line_number":7,"context_line":"- url: http://localhost:3000"},{"line_number":8,"context_line":"paths:"},{"line_number":9,"context_line":"  /call:"},{"line_number":10,"context_line":"    post:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"d68f84e8_2c36b80e","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":28},"updated":"2024-11-29 07:53:55.000000000","message":"Sorry, I\u0027m not familar with the openapi, what\u0027s the real use of this url?","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  title: HTTP_RPC"},{"line_number":5,"context_line":"  version: \"1.0\""},{"line_number":6,"context_line":"servers:"},{"line_number":7,"context_line":"- url: http://localhost:3000"},{"line_number":8,"context_line":"paths:"},{"line_number":9,"context_line":"  /call:"},{"line_number":10,"context_line":"    post:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"620cdc01_6971c8ba","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":28},"in_reply_to":"d68f84e8_2c36b80e","updated":"2024-12-10 02:18:52.000000000","message":"the `servers` option in the Swagger (OpenAPI) specification is optional. It specifies the base URLs for the API. If we remove it, the default server URL will be used.\nI really think this is not really useful, therefore i just removed it.","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"036078b617405aff10df3bb0a94c5bd883269561","unresolved":true,"context_lines":[{"line_number":51,"context_line":"      - api_key: []"},{"line_number":52,"context_line":"      summary: RPC Call"},{"line_number":53,"context_line":"      tags: []"},{"line_number":54,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":55,"context_line":"  /cast:"},{"line_number":56,"context_line":"    post:"},{"line_number":57,"context_line":"      description: RPC Call"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"d7542702_636fb4f3","line":54,"range":{"start_line":54,"start_character":35,"end_line":54,"end_character":116},"updated":"2024-11-29 07:50:28.000000000","message":"ModuleNotFoundError: No module named \u0027oslo_messaging._drivers.http_driver.openapi.server.controllers\u0027","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"      - api_key: []"},{"line_number":52,"context_line":"      summary: RPC Call"},{"line_number":53,"context_line":"      tags: []"},{"line_number":54,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":55,"context_line":"  /cast:"},{"line_number":56,"context_line":"    post:"},{"line_number":57,"context_line":"      description: RPC Call"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"a6a82d19_f2e04bbe","line":54,"range":{"start_line":54,"start_character":35,"end_line":54,"end_character":116},"in_reply_to":"d7542702_636fb4f3","updated":"2024-12-10 02:18:52.000000000","message":"Sorry this is because i haven\u0027t pushed the reset of patches.\nCurrent status: 3/5.\n\nI will try to submit the rest of patches by the end of the year.","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"036078b617405aff10df3bb0a94c5bd883269561","unresolved":true,"context_lines":[{"line_number":91,"context_line":"      - api_key: []"},{"line_number":92,"context_line":"      summary: RPC Call"},{"line_number":93,"context_line":"      tags: []"},{"line_number":94,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":95,"context_line":"  /cast_fanout:"},{"line_number":96,"context_line":"    post:"},{"line_number":97,"context_line":"      description: RPC Cast Fanout"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"e9bdd8f8_842bda18","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":116},"updated":"2024-11-29 07:50:28.000000000","message":"ditto","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"      - api_key: []"},{"line_number":92,"context_line":"      summary: RPC Call"},{"line_number":93,"context_line":"      tags: []"},{"line_number":94,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":95,"context_line":"  /cast_fanout:"},{"line_number":96,"context_line":"    post:"},{"line_number":97,"context_line":"      description: RPC Cast Fanout"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"88597e81_5e191e77","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":116},"in_reply_to":"e9bdd8f8_842bda18","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"036078b617405aff10df3bb0a94c5bd883269561","unresolved":true,"context_lines":[{"line_number":128,"context_line":"      - api_key: []"},{"line_number":129,"context_line":"      summary: RPC Call"},{"line_number":130,"context_line":"      tags: []"},{"line_number":131,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":132,"context_line":"  /healthcheck:"},{"line_number":133,"context_line":"    get:"},{"line_number":134,"context_line":"      description: It returns a 200 OK if this endpoint is considered healthy."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ed28b5f4_d95b0ced","line":131,"range":{"start_line":131,"start_character":35,"end_line":131,"end_character":116},"updated":"2024-11-29 07:50:28.000000000","message":"ditto","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":128,"context_line":"      - api_key: []"},{"line_number":129,"context_line":"      summary: RPC Call"},{"line_number":130,"context_line":"      tags: []"},{"line_number":131,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":132,"context_line":"  /healthcheck:"},{"line_number":133,"context_line":"    get:"},{"line_number":134,"context_line":"      description: It returns a 200 OK if this endpoint is considered healthy."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1eeebe0c_e85ae54f","line":131,"range":{"start_line":131,"start_character":35,"end_line":131,"end_character":116},"in_reply_to":"ed28b5f4_d95b0ced","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"036078b617405aff10df3bb0a94c5bd883269561","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                    }"},{"line_number":149,"context_line":"          description: Health Check"},{"line_number":150,"context_line":"      summary: Health Check"},{"line_number":151,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":152,"context_line":"components:"},{"line_number":153,"context_line":"  requestBodies:"},{"line_number":154,"context_line":"    FanoutMessage:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"a6f566fe_9dbde618","line":151,"range":{"start_line":151,"start_character":35,"end_line":151,"end_character":116},"updated":"2024-11-29 07:50:28.000000000","message":"ditto","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                    }"},{"line_number":149,"context_line":"          description: Health Check"},{"line_number":150,"context_line":"      summary: Health Check"},{"line_number":151,"context_line":"      x-openapi-router-controller: oslo_messaging._drivers.http_driver.openapi.server.controllers.default_controller"},{"line_number":152,"context_line":"components:"},{"line_number":153,"context_line":"  requestBodies:"},{"line_number":154,"context_line":"    FanoutMessage:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"d0783e63_86f8a353","line":151,"range":{"start_line":151,"start_character":35,"end_line":151,"end_character":116},"in_reply_to":"a6f566fe_9dbde618","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"1990ec6835eda42e54570b508b1f3083eda73618"}],"oslo_messaging/_drivers/http_driver/options.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":20,"context_line":"# HTTP driver options."},{"line_number":21,"context_line":"http_opts \u003d ["},{"line_number":22,"context_line":"    cfg.StrOpt(\u0027address\u0027,"},{"line_number":23,"context_line":"               help\u003d\u0027IP Address for the http driver to communicate\u0027),"},{"line_number":24,"context_line":"    cfg.PortOpt(\u0027port_range_min\u0027,"},{"line_number":25,"context_line":"                default\u003d10000,"},{"line_number":26,"context_line":"                help\u003d\"Minimum port number to use for http driver \""}],"source_content_type":"text/x-python","patch_set":32,"id":"fd44cc69_c0c53bc4","line":23,"range":{"start_line":23,"start_character":21,"end_line":23,"end_character":66},"updated":"2025-09-27 10:39:38.000000000","message":"If this should be an IP Address then use IPAddrOpt. If this can be a hostname then HostOpt may be ideal.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":20,"context_line":"# HTTP driver options."},{"line_number":21,"context_line":"http_opts \u003d ["},{"line_number":22,"context_line":"    cfg.StrOpt(\u0027address\u0027,"},{"line_number":23,"context_line":"               help\u003d\u0027IP Address for the http driver to communicate\u0027),"},{"line_number":24,"context_line":"    cfg.PortOpt(\u0027port_range_min\u0027,"},{"line_number":25,"context_line":"                default\u003d10000,"},{"line_number":26,"context_line":"                help\u003d\"Minimum port number to use for http driver \""}],"source_content_type":"text/x-python","patch_set":32,"id":"0459df92_b4984b95","line":23,"range":{"start_line":23,"start_character":21,"end_line":23,"end_character":66},"in_reply_to":"fd44cc69_c0c53bc4","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":25,"context_line":"                default\u003d10000,"},{"line_number":26,"context_line":"                help\u003d\"Minimum port number to use for http driver \""},{"line_number":27,"context_line":"                     \"communication\"),"},{"line_number":28,"context_line":"    cfg.PortOpt(\u0027port_range_max\u0027,"},{"line_number":29,"context_line":"                default\u003d20000,"},{"line_number":30,"context_line":"                help\u003d\"Maximum port number to use for http driver \""},{"line_number":31,"context_line":"                     \"communication\"),"}],"source_content_type":"text/x-python","patch_set":32,"id":"293f6953_2a5c7f0b","line":28,"range":{"start_line":28,"start_character":17,"end_line":28,"end_character":31},"updated":"2025-09-27 10:39:38.000000000","message":"We probably have to check in the code logic to ensure max \u003e min.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                default\u003d10000,"},{"line_number":26,"context_line":"                help\u003d\"Minimum port number to use for http driver \""},{"line_number":27,"context_line":"                     \"communication\"),"},{"line_number":28,"context_line":"    cfg.PortOpt(\u0027port_range_max\u0027,"},{"line_number":29,"context_line":"                default\u003d20000,"},{"line_number":30,"context_line":"                help\u003d\"Maximum port number to use for http driver \""},{"line_number":31,"context_line":"                     \"communication\"),"}],"source_content_type":"text/x-python","patch_set":32,"id":"38c849b8_51f5ecb7","line":28,"range":{"start_line":28,"start_character":17,"end_line":28,"end_character":31},"in_reply_to":"293f6953_2a5c7f0b","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    cfg.IntOpt(\u0027max_rpc_request_retries\u0027,"},{"line_number":33,"context_line":"               default\u003d5, min\u003d0,"},{"line_number":34,"context_line":"               help\u003d\u0027Maximum number of retries for sending RPC requests\u0027),"},{"line_number":35,"context_line":"    cfg.URIOpt("},{"line_number":36,"context_line":"        \u0027reverse_proxy_endpoint\u0027,"},{"line_number":37,"context_line":"        help\u003d\"Specifies the reverse proxy endpoint for the oslo.messaging \""},{"line_number":38,"context_line":"             \"server. When an HTTP driver client sends an RPC to a server \""}],"source_content_type":"text/x-python","patch_set":32,"id":"51acb750_704bc28f","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":14},"updated":"2025-09-27 10:39:38.000000000","message":"Add `schemes\u003d(\u0027http\u0027, \u0027https\u0027),`","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    cfg.IntOpt(\u0027max_rpc_request_retries\u0027,"},{"line_number":33,"context_line":"               default\u003d5, min\u003d0,"},{"line_number":34,"context_line":"               help\u003d\u0027Maximum number of retries for sending RPC requests\u0027),"},{"line_number":35,"context_line":"    cfg.URIOpt("},{"line_number":36,"context_line":"        \u0027reverse_proxy_endpoint\u0027,"},{"line_number":37,"context_line":"        help\u003d\"Specifies the reverse proxy endpoint for the oslo.messaging \""},{"line_number":38,"context_line":"             \"server. When an HTTP driver client sends an RPC to a server \""}],"source_content_type":"text/x-python","patch_set":32,"id":"f7255c67_88b9012c","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":14},"in_reply_to":"51acb750_704bc28f","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        help\u003d\"Specifies the reverse proxy endpoint for the oslo.messaging \""},{"line_number":38,"context_line":"             \"server. When an HTTP driver client sends an RPC to a server \""},{"line_number":39,"context_line":"             \"that belongs to a different reverse proxy, the client forwards \""},{"line_number":40,"context_line":"             \"the request to the target server\u0027s reverse proxy. An empty \""},{"line_number":41,"context_line":"             \"string (default) indicates a direct RPC call. Format: \""},{"line_number":42,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":43,"context_line":"    ),"},{"line_number":44,"context_line":"    cfg.URIOpt("}],"source_content_type":"text/x-python","patch_set":32,"id":"fe5e44f1_d8dec051","line":41,"range":{"start_line":40,"start_character":64,"end_line":41,"end_character":40},"updated":"2025-09-27 10:39:38.000000000","message":"Default is None, not an empty string.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        help\u003d\"Specifies the reverse proxy endpoint for the oslo.messaging \""},{"line_number":38,"context_line":"             \"server. When an HTTP driver client sends an RPC to a server \""},{"line_number":39,"context_line":"             \"that belongs to a different reverse proxy, the client forwards \""},{"line_number":40,"context_line":"             \"the request to the target server\u0027s reverse proxy. An empty \""},{"line_number":41,"context_line":"             \"string (default) indicates a direct RPC call. Format: \""},{"line_number":42,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":43,"context_line":"    ),"},{"line_number":44,"context_line":"    cfg.URIOpt("}],"source_content_type":"text/x-python","patch_set":32,"id":"7fcd0ac0_91e767e8","line":41,"range":{"start_line":40,"start_character":64,"end_line":41,"end_character":40},"in_reply_to":"fe5e44f1_d8dec051","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":41,"context_line":"             \"string (default) indicates a direct RPC call. Format: \""},{"line_number":42,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":43,"context_line":"    ),"},{"line_number":44,"context_line":"    cfg.URIOpt("},{"line_number":45,"context_line":"        \u0027proxy_endpoint\u0027,"},{"line_number":46,"context_line":"        help\u003d\"Specifies the proxy endpoint that the oslo.messaging client \""},{"line_number":47,"context_line":"             \"belongs to. If configured, an HTTP driver client must send an \""}],"source_content_type":"text/x-python","patch_set":32,"id":"6c325cf3_765f548b","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":14},"updated":"2025-09-27 10:39:38.000000000","message":"Add `schemes\u003d(\u0027http\u0027, \u0027https\u0027),`","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":41,"context_line":"             \"string (default) indicates a direct RPC call. Format: \""},{"line_number":42,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":43,"context_line":"    ),"},{"line_number":44,"context_line":"    cfg.URIOpt("},{"line_number":45,"context_line":"        \u0027proxy_endpoint\u0027,"},{"line_number":46,"context_line":"        help\u003d\"Specifies the proxy endpoint that the oslo.messaging client \""},{"line_number":47,"context_line":"             \"belongs to. If configured, an HTTP driver client must send an \""}],"source_content_type":"text/x-python","patch_set":32,"id":"f79c8eb2_c9541a07","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":14},"in_reply_to":"6c325cf3_765f548b","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        \u0027proxy_endpoint\u0027,"},{"line_number":46,"context_line":"        help\u003d\"Specifies the proxy endpoint that the oslo.messaging client \""},{"line_number":47,"context_line":"             \"belongs to. If configured, an HTTP driver client must send an \""},{"line_number":48,"context_line":"             \"RPC through the proxy. An empty string (default) indicates that \""},{"line_number":49,"context_line":"             \"no proxy is required for the RPC call. Format: \""},{"line_number":50,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":51,"context_line":"    ),"}],"source_content_type":"text/x-python","patch_set":32,"id":"eeb73823_0957b406","line":48,"range":{"start_line":48,"start_character":37,"end_line":48,"end_character":62},"updated":"2025-09-27 10:39:38.000000000","message":"Default is None, not an empty string.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \u0027proxy_endpoint\u0027,"},{"line_number":46,"context_line":"        help\u003d\"Specifies the proxy endpoint that the oslo.messaging client \""},{"line_number":47,"context_line":"             \"belongs to. If configured, an HTTP driver client must send an \""},{"line_number":48,"context_line":"             \"RPC through the proxy. An empty string (default) indicates that \""},{"line_number":49,"context_line":"             \"no proxy is required for the RPC call. Format: \""},{"line_number":50,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":51,"context_line":"    ),"}],"source_content_type":"text/x-python","patch_set":32,"id":"c78f2e5e_193c9249","line":48,"range":{"start_line":48,"start_character":37,"end_line":48,"end_character":62},"in_reply_to":"eeb73823_0957b406","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":59,"context_line":"             \"your application to security risks.\"),"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027api_auth_token\u0027,"},{"line_number":61,"context_line":"               secret\u003dTrue,"},{"line_number":62,"context_line":"               default\u003d\u0027token\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027The authentication token used in the X-Auth header \u0027"},{"line_number":64,"context_line":"               \u0027for the HTTP server of each service\u0027),"},{"line_number":65,"context_line":"    cfg.IntOpt(\u0027listen_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bc66b9f2_0c1cae91","line":62,"range":{"start_line":62,"start_character":24,"end_line":62,"end_character":29},"updated":"2025-09-27 10:39:38.000000000","message":"Can we remove this insecure default ?","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":59,"context_line":"             \"your application to security risks.\"),"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027api_auth_token\u0027,"},{"line_number":61,"context_line":"               secret\u003dTrue,"},{"line_number":62,"context_line":"               default\u003d\u0027token\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027The authentication token used in the X-Auth header \u0027"},{"line_number":64,"context_line":"               \u0027for the HTTP server of each service\u0027),"},{"line_number":65,"context_line":"    cfg.IntOpt(\u0027listen_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"742483be_db42b72a","line":62,"range":{"start_line":62,"start_character":24,"end_line":62,"end_character":29},"in_reply_to":"bc66b9f2_0c1cae91","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5cf0c161b8297ff7734bcb89589ad80b6ed829c","unresolved":true,"context_lines":[{"line_number":21,"context_line":"http_opts \u003d ["},{"line_number":22,"context_line":"    cfg.HostAddressOpt(\u0027address\u0027,"},{"line_number":23,"context_line":"                       default\u003d\u0027127.0.0.1\u0027,"},{"line_number":24,"context_line":"                       help\u003d\u0027IP address of the current host to bind the HTTP \u0027"},{"line_number":25,"context_line":"                            \u0027server to and register with Consul. This must be \u0027"},{"line_number":26,"context_line":"                            \u0027a real, routable IP address of the host (not \u0027"},{"line_number":27,"context_line":"                            \u00270.0.0.0) that RPC clients can use to connect.\u0027),"}],"source_content_type":"text/x-python","patch_set":41,"id":"fe7b90bf_1abcb771","line":24,"range":{"start_line":24,"start_character":29,"end_line":24,"end_character":39},"updated":"2026-01-19 15:41:50.000000000","message":"This is late question but I wonder if this is strictly required to be an address ? If hostname is allowed then probably we want to name this option as host.","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2a8e753374d3a09a9d55f849ea65ce6120152699","unresolved":false,"context_lines":[{"line_number":21,"context_line":"http_opts \u003d ["},{"line_number":22,"context_line":"    cfg.HostAddressOpt(\u0027address\u0027,"},{"line_number":23,"context_line":"                       default\u003d\u0027127.0.0.1\u0027,"},{"line_number":24,"context_line":"                       help\u003d\u0027IP address of the current host to bind the HTTP \u0027"},{"line_number":25,"context_line":"                            \u0027server to and register with Consul. This must be \u0027"},{"line_number":26,"context_line":"                            \u0027a real, routable IP address of the host (not \u0027"},{"line_number":27,"context_line":"                            \u00270.0.0.0) that RPC clients can use to connect.\u0027),"}],"source_content_type":"text/x-python","patch_set":41,"id":"b90e7f39_c032fda1","line":24,"range":{"start_line":24,"start_character":29,"end_line":24,"end_character":39},"in_reply_to":"fe7b90bf_1abcb771","updated":"2026-01-20 13:18:38.000000000","message":"I didn\u0027t considier it since we exclusively use IP addresses in our scenarios. However, I just tested it again and confirmed that the hostname works flawlessly as well. So, I renamed it to “host” as suggested. \n\nI also renamed all the related variables in other patches \n\ne.g. https://review.opendev.org/c/openstack/oslo.messaging/+/912499/37..39/oslo_messaging/_drivers/http_driver/consul_operator.py","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"}],"oslo_messaging/_drivers/impl_http.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5f56b6313461c703e6b253f6a33c11d8ca7dad59","unresolved":true,"context_lines":[{"line_number":514,"context_line":"        listen_timeout \u003d self.conf.oslo_messaging_http.listen_timeout"},{"line_number":515,"context_line":"        max_concurrent_requests \u003d self.conf.oslo_messaging_http.\\"},{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"5c927083_f32b3508","line":517,"range":{"start_line":517,"start_character":18,"end_line":517,"end_character":55},"updated":"2024-07-05 09:16:03.000000000","message":"There is no such option in the config group.","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"8214a82aa8baebfd7a7900e1831f0657819c2310","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        listen_timeout \u003d self.conf.oslo_messaging_http.listen_timeout"},{"line_number":515,"context_line":"        max_concurrent_requests \u003d self.conf.oslo_messaging_http.\\"},{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"dca92957_9049aac0","line":517,"range":{"start_line":517,"start_character":18,"end_line":517,"end_character":55},"in_reply_to":"5c927083_f32b3508","updated":"2024-11-12 10:37:22.000000000","message":"Done","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"521dc1218ae805cea79b32230075e5d2e475f8eb","unresolved":true,"context_lines":[{"line_number":515,"context_line":"        max_concurrent_requests \u003d self.conf.oslo_messaging_http.\\"},{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"},{"line_number":521,"context_line":"        enable_ssl \u003d self.conf.oslo_messaging_http.enable_ssl"}],"source_content_type":"text/x-python","patch_set":3,"id":"07ba79a4_c6b9beb6","line":518,"range":{"start_line":518,"start_character":21,"end_line":518,"end_character":61},"updated":"2024-07-05 09:17:40.000000000","message":"There is no such option in the config group.","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"8214a82aa8baebfd7a7900e1831f0657819c2310","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        max_concurrent_requests \u003d self.conf.oslo_messaging_http.\\"},{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"},{"line_number":521,"context_line":"        enable_ssl \u003d self.conf.oslo_messaging_http.enable_ssl"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4d2c02_2bb197d1","line":518,"range":{"start_line":518,"start_character":21,"end_line":518,"end_character":61},"in_reply_to":"07ba79a4_c6b9beb6","updated":"2024-11-12 10:37:22.000000000","message":"Done","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5f56b6313461c703e6b253f6a33c11d8ca7dad59","unresolved":true,"context_lines":[{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"},{"line_number":521,"context_line":"        enable_ssl \u003d self.conf.oslo_messaging_http.enable_ssl"},{"line_number":522,"context_line":"        ssl_certfile \u003d self.conf.oslo_messaging_http.ssl_certfile"},{"line_number":523,"context_line":"        ssl_keyfile \u003d self.conf.oslo_messaging_http.ssl_keyfile"}],"source_content_type":"text/x-python","patch_set":3,"id":"0cbe81f5_061644f3","line":520,"range":{"start_line":519,"start_character":34,"end_line":520,"end_character":35},"updated":"2024-07-05 09:16:03.000000000","message":"There is no such option in the config group.","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"8214a82aa8baebfd7a7900e1831f0657819c2310","unresolved":true,"context_lines":[{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"},{"line_number":521,"context_line":"        enable_ssl \u003d self.conf.oslo_messaging_http.enable_ssl"},{"line_number":522,"context_line":"        ssl_certfile \u003d self.conf.oslo_messaging_http.ssl_certfile"},{"line_number":523,"context_line":"        ssl_keyfile \u003d self.conf.oslo_messaging_http.ssl_keyfile"}],"source_content_type":"text/x-python","patch_set":3,"id":"e70dc5c7_abcd6747","line":520,"range":{"start_line":519,"start_character":34,"end_line":520,"end_character":35},"in_reply_to":"0cbe81f5_061644f3","updated":"2024-11-12 10:37:22.000000000","message":"Sorry for the typos.  I have fixed all the missing options in the config group.","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"3671f66b6f8aa824453e44187a75ebcc6bf677e6","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            max_concurrent_requests"},{"line_number":517,"context_line":"        address \u003d self.conf.oslo_messaging_http.address"},{"line_number":518,"context_line":"        port_range \u003d self.conf.oslo_messaging_http.port_range.split(\u0027:\u0027)"},{"line_number":519,"context_line":"        reserver_proxy_endpoint \u003d self.conf.oslo_messaging_http.\\"},{"line_number":520,"context_line":"            reserver_proxy_endpoint"},{"line_number":521,"context_line":"        enable_ssl \u003d self.conf.oslo_messaging_http.enable_ssl"},{"line_number":522,"context_line":"        ssl_certfile \u003d self.conf.oslo_messaging_http.ssl_certfile"},{"line_number":523,"context_line":"        ssl_keyfile \u003d self.conf.oslo_messaging_http.ssl_keyfile"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa2de73_246c65ae","line":520,"range":{"start_line":519,"start_character":34,"end_line":520,"end_character":35},"in_reply_to":"e70dc5c7_abcd6747","updated":"2024-11-12 10:37:46.000000000","message":"Done","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import connexion"},{"line_number":22,"context_line":"import eventlet"},{"line_number":23,"context_line":"from eventlet import wsgi"},{"line_number":24,"context_line":"import greenlet"},{"line_number":25,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":13,"id":"73c6a05d_99884a76","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":15},"updated":"2024-11-23 06:24:23.000000000","message":"How does this work for services without eventlet ? (for example ceilometer or octavia) These services may not call monkey_patch so this may not work. We should switch the mecnahism according to whether monkey patch is already applied or not.\n\nAlso, please be aware that we are in the process of getting rid of eventlet. We may need to migrate this to a different mechanism as part of that work.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import connexion"},{"line_number":22,"context_line":"import eventlet"},{"line_number":23,"context_line":"from eventlet import wsgi"},{"line_number":24,"context_line":"import greenlet"},{"line_number":25,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":13,"id":"a80ac23e_9e58fa6f","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":15},"in_reply_to":"22d2ac4b_21b6f7e9","updated":"2026-01-06 15:53:52.000000000","message":"i already removed \"monkey_patch\" since now we will use the cheroot implementation.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2c85e763caf1f879e57a2e8224914db0371d58d0","unresolved":true,"context_lines":[{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import connexion"},{"line_number":22,"context_line":"import eventlet"},{"line_number":23,"context_line":"from eventlet import wsgi"},{"line_number":24,"context_line":"import greenlet"},{"line_number":25,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":13,"id":"c4207961_1b45eba2","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":15},"in_reply_to":"26eb9ac6_bf83e93e","updated":"2024-12-27 11:20:16.000000000","message":"\u003eHow does this work for services without eventlet ? (for example ceilometer or octavia)\n\nSorry, I just noticed I missed this comment. Please check my latest patch in [1].\nWe call monkey_patch before starting any services. Hope it makes sense.  \n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/938283/1/oslo_messaging/_drivers/http_driver/openapi/server/controllers/default_controller.py","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"c5dcc5c9e0d630ea3adf4a41054b648c2ca45a8e","unresolved":true,"context_lines":[{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import connexion"},{"line_number":22,"context_line":"import eventlet"},{"line_number":23,"context_line":"from eventlet import wsgi"},{"line_number":24,"context_line":"import greenlet"},{"line_number":25,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":13,"id":"26eb9ac6_bf83e93e","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":15},"in_reply_to":"73c6a05d_99884a76","updated":"2024-11-25 09:31:34.000000000","message":"eventlet in the http driver is only used for creating a wsgi server to receive http requests (RPC requests) in each service process. e.g.\n```\n    def _run_http_server(self, eventlet_socket, app):\n        eventlet.wsgi.server(eventlet_socket, app,\n                    custom_pool\u003dself._thread_pool)\n```\nIf there is a better alternative solution, please do suggest and I will adjust accordingly","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import connexion"},{"line_number":22,"context_line":"import eventlet"},{"line_number":23,"context_line":"from eventlet import wsgi"},{"line_number":24,"context_line":"import greenlet"},{"line_number":25,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":13,"id":"22d2ac4b_21b6f7e9","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":15},"in_reply_to":"c4207961_1b45eba2","updated":"2025-09-27 10:39:38.000000000","message":"We should not run monkey_patch there, because it may conflicts with the services without eventlet. The safer approach is to check whether monkey_patch is already done and fail if not.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Maximum number of retries for sending RPC requests\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt("},{"line_number":53,"context_line":"        \u0027reverse_proxy_endpoint\u0027,"},{"line_number":54,"context_line":"        default\u003d\u0027\u0027,"},{"line_number":55,"context_line":"        help\u003d\"Specifies the reverse proxy endpoint for the oslo.messaging \""},{"line_number":56,"context_line":"             \"server. When an HTTP driver client sends an RPC to a server \""},{"line_number":57,"context_line":"             \"that belongs to a different reverse proxy, the client forwards \""}],"source_content_type":"text/x-python","patch_set":13,"id":"da5be6ff_56b4a62d","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":19},"updated":"2024-11-23 06:24:23.000000000","message":"I\u0027d recommend omitting the default to use None by default.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Maximum number of retries for sending RPC requests\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt("},{"line_number":53,"context_line":"        \u0027reverse_proxy_endpoint\u0027,"},{"line_number":54,"context_line":"        default\u003d\u0027\u0027,"},{"line_number":55,"context_line":"        help\u003d\"Specifies the reverse proxy endpoint for the oslo.messaging \""},{"line_number":56,"context_line":"             \"server. When an HTTP driver client sends an RPC to a server \""},{"line_number":57,"context_line":"             \"that belongs to a different reverse proxy, the client forwards \""}],"source_content_type":"text/x-python","patch_set":13,"id":"3e543a96_9e1f6961","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":19},"in_reply_to":"da5be6ff_56b4a62d","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":59,"context_line":"             \"string (default) indicates a direct RPC call. Format: \""},{"line_number":60,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":61,"context_line":"    ),"},{"line_number":62,"context_line":"    cfg.StrOpt("},{"line_number":63,"context_line":"        \u0027proxy_endpoint\u0027,"},{"line_number":64,"context_line":"        default\u003d\u0027\u0027,"},{"line_number":65,"context_line":"        help\u003d\"Specifies the proxy endpoint that the oslo.messaging client \""}],"source_content_type":"text/x-python","patch_set":13,"id":"a0146811_7e6f00b7","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":14},"updated":"2024-11-23 06:24:23.000000000","message":"Can this be URIOpt ?","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"             \"string (default) indicates a direct RPC call. Format: \""},{"line_number":60,"context_line":"             \"https://\u003chost\u003e:\u003cport\u003e\""},{"line_number":61,"context_line":"    ),"},{"line_number":62,"context_line":"    cfg.StrOpt("},{"line_number":63,"context_line":"        \u0027proxy_endpoint\u0027,"},{"line_number":64,"context_line":"        default\u003d\u0027\u0027,"},{"line_number":65,"context_line":"        help\u003d\"Specifies the proxy endpoint that the oslo.messaging client \""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a1a1d78_fd5935d3","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":14},"in_reply_to":"a0146811_7e6f00b7","updated":"2024-12-10 02:18:52.000000000","message":"updated to use URIOpt for both reverse_proxy_endpoint and proxy_endpoint option.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":79,"context_line":"    cfg.StrOpt(\u0027api_config_file\u0027,"},{"line_number":80,"context_line":"               default\u003d\"openapi.yaml\","},{"line_number":81,"context_line":"               help\u003d\u0027The filename of the OpenAPI definition file\u0027),"},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027api_auth_token\u0027,"},{"line_number":83,"context_line":"               default\u003d\"\","},{"line_number":84,"context_line":"               help\u003d\u0027The authentication token used in the X-Auth header \u0027"},{"line_number":85,"context_line":"               \u0027for the HTTP server of each service\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"cf890c11_afb391a6","line":82,"range":{"start_line":82,"start_character":16,"end_line":82,"end_character":30},"updated":"2024-11-23 06:24:23.000000000","message":"Missing secret\u003dTrue","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    cfg.StrOpt(\u0027api_config_file\u0027,"},{"line_number":80,"context_line":"               default\u003d\"openapi.yaml\","},{"line_number":81,"context_line":"               help\u003d\u0027The filename of the OpenAPI definition file\u0027),"},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027api_auth_token\u0027,"},{"line_number":83,"context_line":"               default\u003d\"\","},{"line_number":84,"context_line":"               help\u003d\u0027The authentication token used in the X-Auth header \u0027"},{"line_number":85,"context_line":"               \u0027for the HTTP server of each service\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"4b55ab38_8a1cd1e7","line":82,"range":{"start_line":82,"start_character":16,"end_line":82,"end_character":30},"in_reply_to":"cf890c11_afb391a6","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":84,"context_line":"               help\u003d\u0027The authentication token used in the X-Auth header \u0027"},{"line_number":85,"context_line":"               \u0027for the HTTP server of each service\u0027),"},{"line_number":86,"context_line":"    cfg.IntOpt(\u0027listen_timeout\u0027,"},{"line_number":87,"context_line":"               default\u003d60,"},{"line_number":88,"context_line":"               help\u003d\u0027The timeout in seconds for listening from HTTP servers\u0027),"},{"line_number":89,"context_line":"    cfg.IntOpt(\u0027max_concurrent_requests\u0027,"},{"line_number":90,"context_line":"               default\u003d20,"}],"source_content_type":"text/x-python","patch_set":13,"id":"e164fabe_d0ae274e","line":87,"range":{"start_line":87,"start_character":15,"end_line":87,"end_character":22},"updated":"2024-11-23 06:24:23.000000000","message":"add min\u003d1 (or probably min\u003d0 if 0 disables timeout ?)","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":84,"context_line":"               help\u003d\u0027The authentication token used in the X-Auth header \u0027"},{"line_number":85,"context_line":"               \u0027for the HTTP server of each service\u0027),"},{"line_number":86,"context_line":"    cfg.IntOpt(\u0027listen_timeout\u0027,"},{"line_number":87,"context_line":"               default\u003d60,"},{"line_number":88,"context_line":"               help\u003d\u0027The timeout in seconds for listening from HTTP servers\u0027),"},{"line_number":89,"context_line":"    cfg.IntOpt(\u0027max_concurrent_requests\u0027,"},{"line_number":90,"context_line":"               default\u003d20,"}],"source_content_type":"text/x-python","patch_set":13,"id":"826bb557_1bd663e0","line":87,"range":{"start_line":87,"start_character":15,"end_line":87,"end_character":22},"in_reply_to":"e164fabe_d0ae274e","updated":"2024-12-10 02:18:52.000000000","message":"Since min\u003d0 doesn\u0027t disable timeout, i added min\u003d1 here.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":87,"context_line":"               default\u003d60,"},{"line_number":88,"context_line":"               help\u003d\u0027The timeout in seconds for listening from HTTP servers\u0027),"},{"line_number":89,"context_line":"    cfg.IntOpt(\u0027max_concurrent_requests\u0027,"},{"line_number":90,"context_line":"               default\u003d20,"},{"line_number":91,"context_line":"               help\u003d\u0027The maximum number of simultaneous requests \u0027"},{"line_number":92,"context_line":"               \u0027each HTTP server can handle\u0027),"},{"line_number":93,"context_line":"    cfg.BoolOpt(\u0027enable_ssl\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5830cb90_5a3260fc","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":22},"updated":"2024-11-23 06:24:23.000000000","message":"add min\u003d1","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               default\u003d60,"},{"line_number":88,"context_line":"               help\u003d\u0027The timeout in seconds for listening from HTTP servers\u0027),"},{"line_number":89,"context_line":"    cfg.IntOpt(\u0027max_concurrent_requests\u0027,"},{"line_number":90,"context_line":"               default\u003d20,"},{"line_number":91,"context_line":"               help\u003d\u0027The maximum number of simultaneous requests \u0027"},{"line_number":92,"context_line":"               \u0027each HTTP server can handle\u0027),"},{"line_number":93,"context_line":"    cfg.BoolOpt(\u0027enable_ssl\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"8598048d_a64debc1","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":22},"in_reply_to":"5830cb90_5a3260fc","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":240,"context_line":"            version\u003dmessage.get(\u0027version\u0027, None),"},{"line_number":241,"context_line":"            namespace\u003dmessage.get(\u0027namespace\u0027, None),"},{"line_number":242,"context_line":"            args\u003dmessage[\u0027args\u0027])"},{"line_number":243,"context_line":"        ret \u003d self.request_http(target_service, \"Call\", rpc_message,"},{"line_number":244,"context_line":"                                timeout\u003dtimeout)"},{"line_number":245,"context_line":"        return ret"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa809b3_45d83230","line":243,"range":{"start_line":243,"start_character":8,"end_line":243,"end_character":14},"updated":"2024-11-23 06:24:23.000000000","message":"you can directly return the return value","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"6e61baf50426633fb5d56874346b60da3f9cdbd0","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            version\u003dmessage.get(\u0027version\u0027, None),"},{"line_number":241,"context_line":"            namespace\u003dmessage.get(\u0027namespace\u0027, None),"},{"line_number":242,"context_line":"            args\u003dmessage[\u0027args\u0027])"},{"line_number":243,"context_line":"        ret \u003d self.request_http(target_service, \"Call\", rpc_message,"},{"line_number":244,"context_line":"                                timeout\u003dtimeout)"},{"line_number":245,"context_line":"        return ret"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7f85fe61_5e3c5816","line":243,"range":{"start_line":243,"start_character":8,"end_line":243,"end_character":14},"in_reply_to":"7aa809b3_45d83230","updated":"2024-12-10 02:18:52.000000000","message":"Done","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5ab8ffd71ee20901783264553288f6b83e2c1453","unresolved":true,"context_lines":[{"line_number":41,"context_line":"http_opts \u003d ["},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027address\u0027,"},{"line_number":43,"context_line":"               help\u003d\u0027IP Address for the http driver to communicate\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027port_range\u0027,"},{"line_number":45,"context_line":"               help\u003d\"Range of ports from which a random port will be\""},{"line_number":46,"context_line":"               \" chosen for http driver communication\"),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027max_rpc_request_retries\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"cbd30db2_cf13b373","line":44,"range":{"start_line":44,"start_character":16,"end_line":44,"end_character":26},"updated":"2025-04-09 16:22:19.000000000","message":"If you expect a specific format (\u003cmin\u003e:\u003cmax\u003e IIUC) then define the regex to reject bad format early.\n\nHowever I guess we can define port_range_min and port_range_max using PortOpt and that might be a simpler approach.","commit_id":"355dc9adf051abb6b2559ea1a7fed022deaaf96b"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a9afbdfce5bb01683cc54bd4d0fe7ce6a0a2d682","unresolved":false,"context_lines":[{"line_number":41,"context_line":"http_opts \u003d ["},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027address\u0027,"},{"line_number":43,"context_line":"               help\u003d\u0027IP Address for the http driver to communicate\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027port_range\u0027,"},{"line_number":45,"context_line":"               help\u003d\"Range of ports from which a random port will be\""},{"line_number":46,"context_line":"               \" chosen for http driver communication\"),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027max_rpc_request_retries\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1d0859e1_517da128","line":44,"range":{"start_line":44,"start_character":16,"end_line":44,"end_character":26},"in_reply_to":"cbd30db2_cf13b373","updated":"2025-04-30 10:20:20.000000000","message":"Thank you for the suggestion! I\u0027ve just addressed it accordingly.\nDone","commit_id":"355dc9adf051abb6b2559ea1a7fed022deaaf96b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5ab8ffd71ee20901783264553288f6b83e2c1453","unresolved":true,"context_lines":[{"line_number":90,"context_line":"                default\u003dFalse,"},{"line_number":91,"context_line":"                help\u003d\u0027Enable SSL for the HTTP server of this service\u0027),"},{"line_number":92,"context_line":"    cfg.StrOpt(\u0027ssl_certfile\u0027,"},{"line_number":93,"context_line":"               default\u003d\"/etc/oslo_messaging/server.cert\","},{"line_number":94,"context_line":"               help\u003d\u0027The path to the SSL certificate file for enabling SSL\u0027),"},{"line_number":95,"context_line":"    cfg.StrOpt(\u0027ssl_keyfile\u0027,"},{"line_number":96,"context_line":"               default\u003d\"/etc/oslo_messaging/server.key\","}],"source_content_type":"text/x-python","patch_set":27,"id":"841dcaae_b223afee","line":93,"range":{"start_line":93,"start_character":24,"end_line":93,"end_character":44},"updated":"2025-04-09 16:22:19.000000000","message":"Because oslo.messaging is a library this config directory is not quite popularly created. I\u0027d suggest having no default(which means None is used) and require these options when enable_ssl is True.","commit_id":"355dc9adf051abb6b2559ea1a7fed022deaaf96b"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"a9afbdfce5bb01683cc54bd4d0fe7ce6a0a2d682","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                default\u003dFalse,"},{"line_number":91,"context_line":"                help\u003d\u0027Enable SSL for the HTTP server of this service\u0027),"},{"line_number":92,"context_line":"    cfg.StrOpt(\u0027ssl_certfile\u0027,"},{"line_number":93,"context_line":"               default\u003d\"/etc/oslo_messaging/server.cert\","},{"line_number":94,"context_line":"               help\u003d\u0027The path to the SSL certificate file for enabling SSL\u0027),"},{"line_number":95,"context_line":"    cfg.StrOpt(\u0027ssl_keyfile\u0027,"},{"line_number":96,"context_line":"               default\u003d\"/etc/oslo_messaging/server.key\","}],"source_content_type":"text/x-python","patch_set":27,"id":"7fd66392_eb97e9ed","line":93,"range":{"start_line":93,"start_character":24,"end_line":93,"end_character":44},"in_reply_to":"841dcaae_b223afee","updated":"2025-04-30 10:20:20.000000000","message":"Done","commit_id":"355dc9adf051abb6b2559ea1a7fed022deaaf96b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ce51dd79c82d5ad74a65c1b09b22fcd915f6c572","unresolved":true,"context_lines":[{"line_number":22,"context_line":"import threading"},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from eventlet import wsgi"},{"line_number":26,"context_line":"from flask import Flask"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from requests.exceptions import RequestException"},{"line_number":29,"context_line":"from requests.exceptions import Timeout as TimeoutError"}],"source_content_type":"text/x-python","patch_set":32,"id":"861a668b_2d3a92d0","line":26,"range":{"start_line":25,"start_character":25,"end_line":26,"end_character":23},"updated":"2025-09-27 10:43:25.000000000","message":"This is a new dep so pyproject.toml should be updated.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import threading"},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from eventlet import wsgi"},{"line_number":26,"context_line":"from flask import Flask"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from requests.exceptions import RequestException"},{"line_number":29,"context_line":"from requests.exceptions import Timeout as TimeoutError"}],"source_content_type":"text/x-python","patch_set":32,"id":"8712bd56_dd34f467","line":26,"range":{"start_line":25,"start_character":25,"end_line":26,"end_character":23},"in_reply_to":"861a668b_2d3a92d0","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            self.reply_data \u003d data"},{"line_number":87,"context_line":"        self.reply_done.set()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_result(self, timeout\u003dNone):"},{"line_number":90,"context_line":"        # Since the message is submitted to GreenThreadPoolExecutor"},{"line_number":91,"context_line":"        # to be executed asynchronously, we need to wait until the result is"},{"line_number":92,"context_line":"        # ready."}],"source_content_type":"text/x-python","patch_set":32,"id":"7b927753_8436cec5","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":18},"updated":"2025-09-27 10:39:38.000000000","message":"Where is this actually used ?","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.reply_data \u003d data"},{"line_number":87,"context_line":"        self.reply_done.set()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_result(self, timeout\u003dNone):"},{"line_number":90,"context_line":"        # Since the message is submitted to GreenThreadPoolExecutor"},{"line_number":91,"context_line":"        # to be executed asynchronously, we need to wait until the result is"},{"line_number":92,"context_line":"        # ready."}],"source_content_type":"text/x-python","patch_set":32,"id":"38b6b98d_45778ca9","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":18},"in_reply_to":"7b927753_8436cec5","updated":"2026-01-06 15:53:52.000000000","message":"Yes, this will actually be used in the later patch when we introduce the flask app [1]\n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/938283/23/oslo_messaging/_drivers/http_driver/flask/app/api.py#81","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":112,"context_line":"class CastRPCIncomingMessage(base.RpcIncomingMessage):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def __init__(self, ctxt, message, msg_id\u003dNone):"},{"line_number":115,"context_line":"        super().__init__(ctxt, message,)"},{"line_number":116,"context_line":"        self.acknowledge_done \u003d threading.Event()"},{"line_number":117,"context_line":"        self.method \u003d message[\u0027method\u0027]"},{"line_number":118,"context_line":"        self.msg_id \u003d msg_id"}],"source_content_type":"text/x-python","patch_set":32,"id":"14ba617c_b42d9c74","line":115,"range":{"start_line":115,"start_character":38,"end_line":115,"end_character":39},"updated":"2025-09-27 10:39:38.000000000","message":"maybe remove this ?","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":112,"context_line":"class CastRPCIncomingMessage(base.RpcIncomingMessage):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def __init__(self, ctxt, message, msg_id\u003dNone):"},{"line_number":115,"context_line":"        super().__init__(ctxt, message,)"},{"line_number":116,"context_line":"        self.acknowledge_done \u003d threading.Event()"},{"line_number":117,"context_line":"        self.method \u003d message[\u0027method\u0027]"},{"line_number":118,"context_line":"        self.msg_id \u003d msg_id"}],"source_content_type":"text/x-python","patch_set":32,"id":"b4b1a088_3b8a90c8","line":115,"range":{"start_line":115,"start_character":38,"end_line":115,"end_character":39},"in_reply_to":"14ba617c_b42d9c74","updated":"2026-01-06 15:53:52.000000000","message":"Done","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":210,"context_line":"            url,"},{"line_number":211,"context_line":"            json\u003drpc_data,"},{"line_number":212,"context_line":"            headers\u003dheaders,"},{"line_number":213,"context_line":"            timeout\u003dtimeout,"},{"line_number":214,"context_line":"            verify\u003dnot self.tls_skip_verify"},{"line_number":215,"context_line":"        )"},{"line_number":216,"context_line":"        response.raise_for_status()"}],"source_content_type":"text/x-python","patch_set":32,"id":"37c08b0c_1304f98a","line":213,"range":{"start_line":213,"start_character":12,"end_line":213,"end_character":28},"updated":"2025-09-27 10:39:38.000000000","message":"IMO we should still consider forcing timeout for any HTTP call.\nWe probably need a different level of timeout for HTTP layer and messaging layer.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            url,"},{"line_number":211,"context_line":"            json\u003drpc_data,"},{"line_number":212,"context_line":"            headers\u003dheaders,"},{"line_number":213,"context_line":"            timeout\u003dtimeout,"},{"line_number":214,"context_line":"            verify\u003dnot self.tls_skip_verify"},{"line_number":215,"context_line":"        )"},{"line_number":216,"context_line":"        response.raise_for_status()"}],"source_content_type":"text/x-python","patch_set":32,"id":"c01dbd67_2e4f88dd","line":213,"range":{"start_line":213,"start_character":12,"end_line":213,"end_character":28},"in_reply_to":"37c08b0c_1304f98a","updated":"2026-01-06 15:53:52.000000000","message":"That’s a great idea. I’ve just introduced a new option called “http_timeout” to differentiate it from the messaging layer’s timeout.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"352fb5c0c6ecbcb3ce3c8d4c876d19c5b1788cb3","unresolved":true,"context_lines":[{"line_number":273,"context_line":"        self.ssl_keyfile \u003d ssl_keyfile"},{"line_number":274,"context_line":"        # service id will be initialized later when the port is decided."},{"line_number":275,"context_line":"        self.service_id \u003d None"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _run_http_server(self, eventlet_socket, app):"},{"line_number":278,"context_line":"        wsgi.server(eventlet_socket, app,"},{"line_number":279,"context_line":"                    custom_pool\u003dself._thread_pool)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _attempt_to_listen_on_port(self, port):"},{"line_number":282,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"5b97abd7_cc8d8d47","line":279,"range":{"start_line":276,"start_character":0,"end_line":279,"end_character":50},"updated":"2025-09-27 10:39:38.000000000","message":"if we know that cheroot server works in service with eventlet still used then I think we directly merge the implementation based on cheroot instead of merging eventlet version and then replace it.\n\nAlternatively we may need to maintain both and switch the implementation according to the patching state.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"9d4f73d18270e1754ba2eded0fad475b63c6d198","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        self.ssl_keyfile \u003d ssl_keyfile"},{"line_number":274,"context_line":"        # service id will be initialized later when the port is decided."},{"line_number":275,"context_line":"        self.service_id \u003d None"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _run_http_server(self, eventlet_socket, app):"},{"line_number":278,"context_line":"        wsgi.server(eventlet_socket, app,"},{"line_number":279,"context_line":"                    custom_pool\u003dself._thread_pool)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _attempt_to_listen_on_port(self, port):"},{"line_number":282,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"39d3344a_c969830a","line":279,"range":{"start_line":276,"start_character":0,"end_line":279,"end_character":50},"in_reply_to":"2fce9e8b_69bb27d7","updated":"2026-01-19 14:54:44.000000000","message":"I\u0027ve completed rebase. Now the entire implementation is completely based on cheroot.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fa5e60173babafc434c558425d9572a0820a52db","unresolved":true,"context_lines":[{"line_number":273,"context_line":"        self.ssl_keyfile \u003d ssl_keyfile"},{"line_number":274,"context_line":"        # service id will be initialized later when the port is decided."},{"line_number":275,"context_line":"        self.service_id \u003d None"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _run_http_server(self, eventlet_socket, app):"},{"line_number":278,"context_line":"        wsgi.server(eventlet_socket, app,"},{"line_number":279,"context_line":"                    custom_pool\u003dself._thread_pool)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _attempt_to_listen_on_port(self, port):"},{"line_number":282,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"2fce9e8b_69bb27d7","line":279,"range":{"start_line":276,"start_character":0,"end_line":279,"end_character":50},"in_reply_to":"5b97abd7_cc8d8d47","updated":"2026-01-06 15:53:52.000000000","message":"I totally agree with you. Since this chain of patches is too complex and takes so much time, I think it is better to directly merge the implementation based on cheroot for simplicity.\n\nsome rebase work is needed on my side, i will get it done soon.","commit_id":"039a42bc2af0654ec88f0f4aeb445ce8125f208d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5cf0c161b8297ff7734bcb89589ad80b6ed829c","unresolved":true,"context_lines":[{"line_number":19,"context_line":"import secrets"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":"import time"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cheroot.ssl import builtin as cheroot_ssl"}],"source_content_type":"text/x-python","patch_set":41,"id":"2321e8a0_5ad6a5dd","line":22,"updated":"2026-01-19 15:41:50.000000000","message":"(nit) Remove this blank line","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2a8e753374d3a09a9d55f849ea65ce6120152699","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import secrets"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":"import time"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cheroot.ssl import builtin as cheroot_ssl"}],"source_content_type":"text/x-python","patch_set":41,"id":"44bcf2dc_3494da27","line":22,"in_reply_to":"2321e8a0_5ad6a5dd","updated":"2026-01-20 13:18:38.000000000","message":"Done","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5cf0c161b8297ff7734bcb89589ad80b6ed829c","unresolved":true,"context_lines":[{"line_number":304,"context_line":"            LOG.debug(\"Listening on %s:%s succeeded.\", self.address, port)"},{"line_number":305,"context_line":"            return server"},{"line_number":306,"context_line":"        except Exception as e:"},{"line_number":307,"context_line":"            LOG.error(\"Listening on %s:%s failed: %s\", self.address, port, e)"},{"line_number":308,"context_line":"            return None"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _create_server(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"47d1cbd5_6b9b9581","line":307,"range":{"start_line":307,"start_character":16,"end_line":307,"end_character":21},"updated":"2026-01-19 15:41:50.000000000","message":"I wonder if this can be a warning log ? IIUC we expect that over-wrapped ranges can be used by multiple services and we may see bind failures in such deployment due to conflicting ports.","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2a8e753374d3a09a9d55f849ea65ce6120152699","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            LOG.debug(\"Listening on %s:%s succeeded.\", self.address, port)"},{"line_number":305,"context_line":"            return server"},{"line_number":306,"context_line":"        except Exception as e:"},{"line_number":307,"context_line":"            LOG.error(\"Listening on %s:%s failed: %s\", self.address, port, e)"},{"line_number":308,"context_line":"            return None"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _create_server(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"f73b0c82_ac277072","line":307,"range":{"start_line":307,"start_character":16,"end_line":307,"end_character":21},"in_reply_to":"47d1cbd5_6b9b9581","updated":"2026-01-20 13:18:38.000000000","message":"Yes, you are right! It is likely and expected to fail multiple times if we have multiple services and workers running on the same node, as we are randomly selecting ports. warning log makes more sense here.","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5cf0c161b8297ff7734bcb89589ad80b6ed829c","unresolved":true,"context_lines":[{"line_number":329,"context_line":"        return server"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _register_service(self, address, port):"},{"line_number":332,"context_line":"        self.service_id \u003d f\u0027{self.target.server}:{str(port)}\u0027"},{"line_number":333,"context_line":"        LOG.debug(\"Start registration on the service broker\")"},{"line_number":334,"context_line":"        name \u003d f\u0027{self.exchange}.{self.target.topic}\u0027"},{"line_number":335,"context_line":"        tags \u003d [self.target.server]"}],"source_content_type":"text/x-python","patch_set":41,"id":"bccb596c_c85877df","line":332,"range":{"start_line":332,"start_character":29,"end_line":332,"end_character":47},"updated":"2026-01-19 15:41:50.000000000","message":"Maybe it\u0027s better to escape this by [] when it is an IPv6 address.","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2a8e753374d3a09a9d55f849ea65ce6120152699","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        return server"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _register_service(self, address, port):"},{"line_number":332,"context_line":"        self.service_id \u003d f\u0027{self.target.server}:{str(port)}\u0027"},{"line_number":333,"context_line":"        LOG.debug(\"Start registration on the service broker\")"},{"line_number":334,"context_line":"        name \u003d f\u0027{self.exchange}.{self.target.topic}\u0027"},{"line_number":335,"context_line":"        tags \u003d [self.target.server]"}],"source_content_type":"text/x-python","patch_set":41,"id":"404b1ad6_f688f074","line":332,"range":{"start_line":332,"start_character":29,"end_line":332,"end_character":47},"in_reply_to":"bccb596c_c85877df","updated":"2026-01-20 13:18:38.000000000","message":"Done","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e5cf0c161b8297ff7734bcb89589ad80b6ed829c","unresolved":true,"context_lines":[{"line_number":350,"context_line":"        self._register_service(address, port)"},{"line_number":351,"context_line":"        prefix \u003d \u0027https://%s:%s\u0027 if self.enable_ssl else \u0027http://%s:%s\u0027"},{"line_number":352,"context_line":"        # Step 3: Start the wsgi server."},{"line_number":353,"context_line":"        LOG.debug(\u0027Starting WSGI server with \u0027 + prefix, address, port)"},{"line_number":354,"context_line":"        # Pass the callback function for processing incoming messages from"},{"line_number":355,"context_line":"        # RPC server to http server."},{"line_number":356,"context_line":"        self.app.config[\u0027callback\u0027] \u003d on_incoming_callback"}],"source_content_type":"text/x-python","patch_set":41,"id":"7c5a4047_978b919a","line":353,"range":{"start_line":353,"start_character":57,"end_line":353,"end_character":64},"updated":"2026-01-19 15:41:50.000000000","message":"ditto. consider escape.","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2a8e753374d3a09a9d55f849ea65ce6120152699","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        self._register_service(address, port)"},{"line_number":351,"context_line":"        prefix \u003d \u0027https://%s:%s\u0027 if self.enable_ssl else \u0027http://%s:%s\u0027"},{"line_number":352,"context_line":"        # Step 3: Start the wsgi server."},{"line_number":353,"context_line":"        LOG.debug(\u0027Starting WSGI server with \u0027 + prefix, address, port)"},{"line_number":354,"context_line":"        # Pass the callback function for processing incoming messages from"},{"line_number":355,"context_line":"        # RPC server to http server."},{"line_number":356,"context_line":"        self.app.config[\u0027callback\u0027] \u003d on_incoming_callback"}],"source_content_type":"text/x-python","patch_set":41,"id":"1d9b231b_dd6b62af","line":353,"range":{"start_line":353,"start_character":57,"end_line":353,"end_character":64},"in_reply_to":"7c5a4047_978b919a","updated":"2026-01-20 13:18:38.000000000","message":"Done","commit_id":"eb01cfbab6727619705f51ade62c7d0a76d1d731"}],"requirements.txt":[{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2a261b8129f5c7655a3b0295a9519b865d1efc8d","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# http driver"},{"line_number":35,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":36,"context_line":"connexion[swagger-ui]\u003e\u003d2.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":10,"id":"90d9039d_189e5f88","line":36,"updated":"2024-11-12 09:17:24.000000000","message":"It seems this is required for global requirements as well.","commit_id":"e6d6896172dd2e273a32f2da8e95aaf27e7e2de6"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"ea9f0ee20da2a726f6e611e3804dd0ec7cc0e741","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# http driver"},{"line_number":35,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":36,"context_line":"connexion[swagger-ui]\u003e\u003d2.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":10,"id":"30ff50d1_28cb4b04","line":36,"in_reply_to":"90d9039d_189e5f88","updated":"2025-03-24 07:14:20.000000000","message":"connexion is no longer needed with the new implementation.","commit_id":"e6d6896172dd2e273a32f2da8e95aaf27e7e2de6"}],"setup.cfg":[{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"fb4e25d8a4a7982c84381f3ef7073f3c7bfee823","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    confluent-kafka\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":33,"context_line":"http \u003d"},{"line_number":34,"context_line":"    python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":35,"context_line":"    connexion[swagger-ui]\u003e\u003d2.6.0 # Apache-2.0"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"[files]"},{"line_number":38,"context_line":"packages \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"ca2f3e94_3270eacd","line":35,"updated":"2024-04-05 01:05:38.000000000","message":"I will add this to the global requirements as well.","commit_id":"5fee2d754cc7bc42b14159a327db5594bf718add"}],"test-requirements.txt":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82c3267133a0ac1dad17342aa2eb4ffe042d191f","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# for test_impl_http"},{"line_number":12,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":13,"context_line":"connexion[swagger-ui]\u003e\u003d2.6.0 # Apache-2.0"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"coverage\u003e\u003d4.0 # Apache-2.0"},{"line_number":16,"context_line":""}],"source_content_type":"text/plain","patch_set":13,"id":"4393a9e6_f21ba46a","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":41},"updated":"2024-11-23 06:24:23.000000000","message":"This needs to be added to global requirements.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"ea9f0ee20da2a726f6e611e3804dd0ec7cc0e741","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# for test_impl_http"},{"line_number":12,"context_line":"python-consul2\u003e\u003d0.1.5 # Apache-2.0"},{"line_number":13,"context_line":"connexion[swagger-ui]\u003e\u003d2.6.0 # Apache-2.0"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"coverage\u003e\u003d4.0 # Apache-2.0"},{"line_number":16,"context_line":""}],"source_content_type":"text/plain","patch_set":13,"id":"ae11d658_23b7687e","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":41},"in_reply_to":"4393a9e6_f21ba46a","updated":"2025-03-24 07:14:20.000000000","message":"connexion is no longer needed with the new implementation.","commit_id":"491a17a43711d8fdb6a211652a19f65355a2eacf"}]}
