)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5cdf3a66c72b4ed69cf57704a32f13e35d4722e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5d905d8b_9fcb660f","updated":"2024-06-24 10:22:15.000000000","message":"Thanks for this proposal.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"84c21346bc550114761d7415eabae2520ed2ebb9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"edae0e6a_98faae02","in_reply_to":"5d905d8b_9fcb660f","updated":"2024-06-24 12:44:12.000000000","message":"Thanks a lot for the code review and discussion.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"532b6376_0a278463","updated":"2024-06-24 12:42:45.000000000","message":"Thanks Daniel for this proposal","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"317c7d45e22a103a66ec77bce05658ba2b0970e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5284ae6d_ea80f963","updated":"2024-06-26 07:51:12.000000000","message":"-1 to highlight the last comments","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e0777d1a2f32babc46c5b6101b63b8b96233800b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"555e01fb_edda22b1","updated":"2024-06-27 16:43:52.000000000","message":"I agree with the open comments and current -1, but I also want to give my support to this plan.","commit_id":"db2e6d1963831fee4cb18ae12679e8225d192520"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"06c9fdb67b666e11914d1a32e864c67c3d1371b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"62fd1129_1ca31b5b","updated":"2024-06-28 14:55:06.000000000","message":"We are really close from the specs deadline (~ 15 days)[1]. Feature freeze is by the middle of August (the week of August 19)[2], it leave you enough time to onboard this topic into the Dalmatian train.\n\n[1] https://lists.openstack.org/archives/list/openstack-discuss@lists.openstack.org/thread/KJANPB7I5QQNWVIP6OG3IB3R3W637DK3/\n[2] https://releases.openstack.org/dalmatian/schedule.html#d-final-lib","commit_id":"db2e6d1963831fee4cb18ae12679e8225d192520"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d292cb47_f08efbc8","updated":"2024-07-02 13:09:53.000000000","message":"Thanks Daniel for this new patch set.\nLot of questions remains opened, please see my inline comments.\n\nDo not hesitate to ask questions directly on the review, Sean and Rodolfo have a good overview of real use case example and could also answer them better than me.\n\nAlso as I suggested to you weeks ago, I\u0027d encourage you to ping Adam McArthur who also worked on a similar attempts [1] few months ago, he could give you some comments\n\n[1] https://review.opendev.org/c/openstack/oslo.service/+/914927","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c1bbaa4d6418b89b7957f5048bd49bea92fe810","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"95b67ef9_228b240a","in_reply_to":"228445da_57873291","updated":"2024-07-02 13:29:59.000000000","message":"By the way I forget to answer yes I have contact Adam and also Mehdi. I have contact Mehdi last week to ask if the oslo team can have the right on the cotyledon github repository.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0b206501de6a6bf6b506a37508be976d10d96e37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"498dc39a_4100daa1","in_reply_to":"5ebe68ee_bf6d55ab","updated":"2024-07-03 09:37:23.000000000","message":"Still waiting the answer. I will try contact him again this week.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"19fbcda0a53d7efded8bda0f48c4c1357d870275","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5ebe68ee_bf6d55ab","in_reply_to":"95b67ef9_228b240a","updated":"2024-07-02 14:51:07.000000000","message":"Awesome.\nWhat is Mehdi\u0027s answer?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"848900266b4d81f62c389e866bd162924aadb54e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"228445da_57873291","in_reply_to":"d292cb47_f08efbc8","updated":"2024-07-02 13:17:55.000000000","message":"Thanks a lot for the code review. I will answer to all the questions.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c06245009f855f00d94c588091c6e216ac73874b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fff6745c_0c91f329","updated":"2024-07-03 09:47:08.000000000","message":"I will add the binding a bit later.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"adc43a35_a74b28a5","updated":"2024-07-03 11:44:49.000000000","message":"Thanks Daniel.\nPlease see my new comments and the already existing ones","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f8bed67e80d3cfb3cecdd04d6676ca72bc439fdb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cbd061db_c6349122","updated":"2024-07-03 11:52:38.000000000","message":"This is a major refactor of oslo.service, so we can\u0027t leave place to doubts.\nIf we do not answers all these questions before shifting into the implementation step then it will be a nightmare.\n\nMany services relies on oslo.service so such proposal could have numerous side effects if not well prepared. That\u0027s not a new isolated backend like we can found into oslo.cache or into other oslo deliverables, that\u0027s a full rewrite of oslo.service.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"9f640dcee2fddb5af02cc2d47a17088f10af331e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"82b14947_d201e299","in_reply_to":"adc43a35_a74b28a5","updated":"2024-07-03 12:05:05.000000000","message":"I will answer later on all the comments.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"aac6d2035c1492c8e330a5e53f043d11846daad4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"10a57b6f_90568088","updated":"2024-07-05 13:10:13.000000000","message":"Thanks Daniel, keeping my -1 as numerous questions remains opened and the proposal must be updated accordingly.","commit_id":"8ce82a01c61c5fdba3364d641d2875301720edc2"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"d9c924148f04557af2085d398bcc08442cefffa2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"aa4a6b3b_cca70c28","updated":"2024-07-09 14:34:42.000000000","message":"For the support of wsgi application we can use gunicorn, uwsgi or something similar.","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"d43137f6ba2b7a53fc40cb25d7d94e064309504d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"71de1eb9_08274894","updated":"2024-07-09 14:33:40.000000000","message":"I have update the specs. We will not use a new option to configure the backend. The users can choose with import what backend they would like to use. About the loopingcall and threadgroup the new implementation can use the threading module from python. To replace wsgi we can use an wsgi app.","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"83d604f0_dbe94027","updated":"2024-07-09 16:53:46.000000000","message":"Thanks Daniel for this new patch set. \n\nMy comments are already numerous so I do not feel that adding more comments will be useful. Numerous of them remains still not yet addressed, for this reason I keep my -1, and for this reason, the ones I add within this patch set (now) will be the last ones until existing comments will be addressed. In the coming patch sets, I\u0027ll simply vote to highlight the needs of changes. Obviously if you ask questions I\u0027ll be happy to answer them. I prefer signal to noise.\n\nI\u0027m still waiting for:\n- a minimal overview of the API impacts/changes\n- a clear overview of the config changes (sections, snippets etc...)\n\nObtaining, at least, these 2 points is crucial if we want to understand where we go.\n\nAll along my previous reviews I led you detailed questions, with potential tracks to follow, they are ways to answer those questions. I invite you to manage your coming changes section by section (API, config, etc...)\n\nAgain, I encourage you to take example on https://review.opendev.org/c/openstack/oslo-specs/+/454897","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"ba8ba410abdbc300f7bfc83016e776cd5aabbc84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c33cffe3_cb14c277","in_reply_to":"83d604f0_dbe94027","updated":"2024-07-10 10:57:39.000000000","message":"Hi Hervé,\n\nThe idea is to take the existing API and reimplement exactly the same with a different internal implementation. Instead of using eventlet, we\u0027ll use cotyledon, futurist, uwsgi or something similar and the threading module. The idea is for the migration to be transparent to users, who simply have to change an import line. \nI also think that, in the end, it\u0027s better to leave the current implementation as it is and not move it to a backend package, but simply add the new implementation. That way, users won\u0027t have to make any changes at first. The configuration will remain the same and there will be no changes. \nI think we already know where we\u0027re going and the request is pretty clear: we need to take the current implementation and reimplement it.  So the spec is already there. I don\u0027t think there\u0027s much more to say. I think the best thing now is to start the implementation and potentially update this document afterwards. But I don\u0027t think we need much more than that. I think everyone agrees on the way forward and everyone seems to agree with using cotyledon and futurist.","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"29f8310d5e57303fcb6f32542150554c918e4e53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2e66c716_aa9ab95a","in_reply_to":"c33cffe3_cb14c277","updated":"2024-08-29 13:53:08.000000000","message":"Hi Daniel,\n\nAny updates?\nThis patch do not shown any activity since almost 2 months and many comments remains unaddressed, what next?\n\nThe criticity of this topic increase with time, and we need to go ahead, hence, I decided to make an alternative analyze. Please find my alternative proposal here:\n\nhttps://review.opendev.org/c/openstack/oslo-specs/+/927503 \n\n\u003e The idea is to take the existing API and reimplement exactly the same with a different internal implementation. Instead of using eventlet, we\u0027ll use cotyledon, futurist, uwsgi or something similar and the threading module. The idea is for the migration to be transparent to users, who simply have to change an import line. \n\u003e I also think that, in the end, it\u0027s better to leave the current implementation as it is and not move it to a backend package, but simply add the new implementation. That way, users won\u0027t have to make any changes at first. The configuration will remain the same and there will be no changes. \n\nI should admit that I\u0027m loose. Your spec present backends and your comment say to not propose backend.\n\nIMO, that\u0027s not possible to be transparent to users by telling them to change all their imports each 4 months. Without introducing an option to choose the backend users will have to juggle between their imports during all the migration life cycle. \n\nIf we move implementations into 2 new backends like you suggested in your spec, then users would have to rewrote all their imports at least 3 time in a short time span:\n1. once the eventlet backend will be created\n2. once they will decide to switch to the new backend\n3. once the eventlet backend will be removed, and then, when the backend notion will be abandonned too.\n\nNot such a transparent migration...\n\n\u003e I think we already know where we\u0027re going and the request is pretty clear: we need to take the current implementation and reimplement it.  So the spec is already there. I don\u0027t think there\u0027s much more to say. I think the best thing now is to start the implementation and potentially update this document afterwards. \n\nThe purpose of technical specifications is to design a product or a feature before building it. Technical specifications are made to tell how to build that thing (the measures of the project, the architectures of the project, the details of how to do this project). We do not create a plan of a house when that\u0027s house is already built... I fully disagree with that approach.\n\n\u003e But I don\u0027t think we need much more than that. I think everyone agrees on the way forward and everyone seems to agree with using cotyledon and futurist.\n\nRemoving Eventlet from oslo.service is an enormous change. It is like an open heart surgery for oslo.service. I\u0027m not feeling confident to go on such works without a detailed overview. Agreeing on the fact to use cotyledon and futurist is one think, but telling how to migrate to them is another. Specification should answer the how,  that\u0027s what I\u0027m waiting from this proposal. Lot of details are missing in this proposal, and some other parts are confusing, hence I think we need more than that, that\u0027s why I created:\n\nhttps://review.opendev.org/c/openstack/oslo-specs/+/927503\n\nIn all the case, thanks for your previous comments and for all your efforts on this topic until now.","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"}],"specs/dalmatian/use-cotyledon-and-futurist.rst":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5cdf3a66c72b4ed69cf57704a32f13e35d4722e8","unresolved":true,"context_lines":[{"line_number":20,"context_line":"called futurist and the second is surpassed by cotyledon. More details in the project readme about the difference"},{"line_number":21,"context_line":"with oslo.service."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."}],"source_content_type":"text/x-rst","patch_set":1,"id":"eb03507c_d27913f4","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":89},"updated":"2024-06-24 10:22:15.000000000","message":"+1 I\u0027m in favor of keeping the current oslo.service usage, providing the same functionality","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":20,"context_line":"called futurist and the second is surpassed by cotyledon. More details in the project readme about the difference"},{"line_number":21,"context_line":"with oslo.service."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."}],"source_content_type":"text/x-rst","patch_set":1,"id":"eecd2b23_00c85847","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":89},"in_reply_to":"5dee70c1_d46d3ad2","updated":"2024-06-24 12:42:45.000000000","message":"I agree with the backend and the milestones.\nA new backend would allow a progressive migration and transient tests.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"84c21346bc550114761d7415eabae2520ed2ebb9","unresolved":true,"context_lines":[{"line_number":20,"context_line":"called futurist and the second is surpassed by cotyledon. More details in the project readme about the difference"},{"line_number":21,"context_line":"with oslo.service."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bbc6db54_48330290","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":89},"in_reply_to":"5dee70c1_d46d3ad2","updated":"2024-06-24 12:44:12.000000000","message":"Yes that sounds perfect.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b4077d8fca2f6705aba0de806a2052f591a1b58","unresolved":true,"context_lines":[{"line_number":20,"context_line":"called futurist and the second is surpassed by cotyledon. More details in the project readme about the difference"},{"line_number":21,"context_line":"with oslo.service."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5dee70c1_d46d3ad2","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":89},"in_reply_to":"eb03507c_d27913f4","updated":"2024-06-24 10:36:52.000000000","message":"yep i think this would be a good approch althgouh for the transition period i woudl suggest we shoudl not do a direct replecemnt but rather provider two \"backends\"\n\nrefactor the current implemeation into a eventlet backend and provide a cotyledon based backend as an alternitive.\n\nin 2025.1 we shoudl deprecate the eventlet backend and make the cotyledon backend the default\n\nwe can then drop the eventlet backiend in 2025.2 or 2026.1","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5cdf3a66c72b4ed69cf57704a32f13e35d4722e8","unresolved":true,"context_lines":[{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Alternatives"},{"line_number":32,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"04708f67_757d9de7","line":29,"range":{"start_line":29,"start_character":13,"end_line":29,"end_character":45},"updated":"2024-06-24 10:22:15.000000000","message":"I have some questions:\n1) Will oslo.service provide both implementations? eventlet and futurist/cotyledon, same as oslo.messaging [1]\n\n2) Testing: most probably the current oslo.service testing jobs are not enough to check the following changes. I would suggest to sync with other projects to start testing the new releases of oslo.service with the non-eventlet implementation. As Neutron core, I commit myself to create jobs in Neutron to test it.\n\n3) Release and test model: if we are going to provide both implementations (to make easier the migration), I think it would be easier to, once merged a significant change, release a new version; that will be used in the different projects testing the non-eventlet implementation, as suggested in (2). Or, another alternative, could be to checkout the master branch in these jobs, same as we did before with SQAlchemy 2.0 (e.g.: https://review.opendev.org/c/openstack/neutron/+/872273).\n\nIn any case, the testing strategy needs to be synced with the owners of different projects and these owners should propose CI jobs, make the needed changes and take ownership of the possible errors detected.\n\n[1]https://github.com/openstack/oslo.messaging/blob/master/setup.cfg#L55-L57","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b4077d8fca2f6705aba0de806a2052f591a1b58","unresolved":true,"context_lines":[{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Alternatives"},{"line_number":32,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"46e10178_bbdee7a5","line":29,"range":{"start_line":29,"start_character":13,"end_line":29,"end_character":45},"in_reply_to":"04708f67_757d9de7","updated":"2024-06-24 10:36:52.000000000","message":"i belive the answer to 1 is yes for the next 2-3 release both shoudl eb provided.\n\nfor the core service manager.\n\nthe delegation fo the perodic to futureist can proably take and accelerated timeline but the service manager i think need to be more conservitive.\n\nas noted above i would suggest the following timeline\n2024.2: add a optional cotyledon backend\n2025.1 deprecate the eventlet backend and make cotyledon the default\n2025.2/2026.1 remove eventlet implementation\n\nin 2024.2 we should move eventlet form the requiremetns.txt to test-requirements.txt so that it is only installed in if the application that uses oslo.service requires it. alteritnively we could use the extra install targets i.e.\noslo.server[eventlet] to install it. nova does that for optional virt drivers\nhttps://github.com/openstack/nova/blob/master/setup.cfg#L30-L36\n\n2 regarding testing if this was stable enough i would be infavor of enabelitng the \ncotyledon bacakend in the nova-next job this cycle and would suggest that all project shoudl be encurraged to do that in at least one of there tempest jobs.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"84c21346bc550114761d7415eabae2520ed2ebb9","unresolved":true,"context_lines":[{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Alternatives"},{"line_number":32,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ee9151c_ea53a852","line":29,"range":{"start_line":29,"start_character":13,"end_line":29,"end_character":45},"in_reply_to":"46e10178_bbdee7a5","updated":"2024-06-24 12:44:12.000000000","message":"I agree with that. We can provide both for 2 releases.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5cdf3a66c72b4ed69cf57704a32f13e35d4722e8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"Testing Impact"},{"line_number":64,"context_line":"--------------"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"No testing impact."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Implementation"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4fc01791_aa3ceb3d","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":18},"updated":"2024-06-24 10:22:15.000000000","message":"Maybe not directly on the project itself but in the projects using oslo.service to start services.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6b4077d8fca2f6705aba0de806a2052f591a1b58","unresolved":true,"context_lines":[{"line_number":63,"context_line":"Testing Impact"},{"line_number":64,"context_line":"--------------"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"No testing impact."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Implementation"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6aebfe17_41295a52","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":18},"in_reply_to":"4fc01791_aa3ceb3d","updated":"2024-06-24 10:36:52.000000000","message":"well i would expect there to be a testin impact as we would need unit/functional test that use the new backend.\n\ndependign on howe that is doen it may require a seperate job/tox env\n\nwe would need to ensure those tests are not monkeypatched and to ensure that we likely need to run them seperatly\n\nso i would say there is a testing impact\n\nwe also shoudl have one tempest/devstack job using the non eventlet backend.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"84c21346bc550114761d7415eabae2520ed2ebb9","unresolved":true,"context_lines":[{"line_number":63,"context_line":"Testing Impact"},{"line_number":64,"context_line":"--------------"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"No testing impact."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Implementation"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a3b710d6_90fd6731","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":18},"in_reply_to":"6aebfe17_41295a52","updated":"2024-06-24 12:44:12.000000000","message":"Yes you\u0027re right I will update this part. Thanks a lot.","commit_id":"95b34075299cb042d5a1bbcbe0b14e284b48c983"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Problem description"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"In the project to remove eventlet from openstack, we need to adapt oslo.service. The oslo.service project is"},{"line_number":11,"context_line":"strongly linked to eventlet and we need to find a solution about it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4c6bd63c_5dcfe6a0","line":10,"range":{"start_line":10,"start_character":15,"end_line":10,"end_character":48},"updated":"2024-06-24 12:42:45.000000000","message":"Would be useful to add a reference to the community goal proposal to give the context\n\nhttps://review.opendev.org/c/openstack/governance/+/902585","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Problem description"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"In the project to remove eventlet from openstack, we need to adapt oslo.service. The oslo.service project is"},{"line_number":11,"context_line":"strongly linked to eventlet and we need to find a solution about it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c80ff505_66ccffc4","line":10,"range":{"start_line":10,"start_character":15,"end_line":10,"end_character":48},"in_reply_to":"4c6bd63c_5dcfe6a0","updated":"2024-06-24 12:49:43.000000000","message":"I have add the link in the ressource section, but I can move it.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"f011314ea30d59443d003f962dddc8278cf7c612","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Problem description"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"In the project to remove eventlet from openstack, we need to adapt oslo.service. The oslo.service project is"},{"line_number":11,"context_line":"strongly linked to eventlet and we need to find a solution about it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3e585c29_71b41c18","line":10,"range":{"start_line":10,"start_character":15,"end_line":10,"end_character":48},"in_reply_to":"c80ff505_66ccffc4","updated":"2024-06-25 11:46:40.000000000","message":"Done","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Proposed change"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The easiest and most viable solution is to use cotyledon and futurist within oslo.service."},{"line_number":17,"context_line":"The cotyledon project was created by openstack maintainers to replace oslo.service. It is already used in openstack by"},{"line_number":18,"context_line":"the telemetry project, for example. The oslo.service project has been created on top of eventlet to offer two main"},{"line_number":19,"context_line":"functionalities, periodic tasks and workers process management. The first feature has been replaced by another library"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0f2c5e68_d73f1d4d","line":16,"range":{"start_line":16,"start_character":47,"end_line":16,"end_character":89},"updated":"2024-06-24 12:42:45.000000000","message":"I think we have 3 possible scenarios:\n\n1) oslo.service is used as a proxy for cotyledon AND futurist, through the addition of two new backends. One new backend for cotyledon, one new backend for futurist;\n\n2) oslo.service is used as a proxy for cotyledon ONLY, and encourage the adoption of futurist for the features of oslo.service who collid with the features of futurist (periodical tasks), example:\n- https://docs.openstack.org/oslo.service/latest/reference/periodic_task.html#oslo_service.periodic_task.PeriodicTasks\n- https://docs.openstack.org/futurist/latest/user/features.html;\n    \n3) oslo.service only raise deprecations and encourage users to use cotyledon OR futurist depending on the module loaded at runtime.\n\nIf I well understood this proposal, I think you suggested to implement the scenario 1, @dbengt@redhat.com exact?\n\nBy reading the comments from Sean and Rodolfo, it seems to me that they are more advocating for the 2nd scenario, but maybe I simply misunderstood. @smooney@redhat.com, @ralonsoh@redhat.com, please can you confirm which scenario you have in mind? Feel free to describe a new scenario if no one fit your understanding.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Proposed change"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The easiest and most viable solution is to use cotyledon and futurist within oslo.service."},{"line_number":17,"context_line":"The cotyledon project was created by openstack maintainers to replace oslo.service. It is already used in openstack by"},{"line_number":18,"context_line":"the telemetry project, for example. The oslo.service project has been created on top of eventlet to offer two main"},{"line_number":19,"context_line":"functionalities, periodic tasks and workers process management. The first feature has been replaced by another library"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8dc0972c_4eef73a9","line":16,"range":{"start_line":16,"start_character":47,"end_line":16,"end_character":89},"in_reply_to":"0f2c5e68_d73f1d4d","updated":"2024-06-24 12:49:43.000000000","message":"Yes I confirm I suggest the first scenario.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"29b7f90444c7ce8ed24ea941c26ae4693f772d02","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Proposed change"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The easiest and most viable solution is to use cotyledon and futurist within oslo.service."},{"line_number":17,"context_line":"The cotyledon project was created by openstack maintainers to replace oslo.service. It is already used in openstack by"},{"line_number":18,"context_line":"the telemetry project, for example. The oslo.service project has been created on top of eventlet to offer two main"},{"line_number":19,"context_line":"functionalities, periodic tasks and workers process management. The first feature has been replaced by another library"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4f37bff8_3d6e13d5","line":16,"range":{"start_line":16,"start_character":47,"end_line":16,"end_character":89},"in_reply_to":"8dc0972c_4eef73a9","updated":"2024-06-24 13:31:46.000000000","message":"scenairo 1 is what i was suggesting\n\nwe have a backend for the https://github.com/openstack/oslo.service/blob/master/oslo_service/service.py that can delegate to cotyledon\nand a backend for the current https://github.com/openstack/oslo.service/blob/master/oslo_service/periodic_task.py and https://github.com/openstack/oslo.service/blob/master/oslo_service/loopingcall.py that proxy to futureist.\n\nwe coudl take option 2 i guess but in that case i would expect oslo.service to start raisign deprecation warning if you use its version fo perodic tasks.\n\npersonnlaly i would prer to take option 2 after we have compelted option 1\n\ni.e. lets get oslo working as a facade that is capable of running without eventlet or applciation rewrite to use futureist directly. deprecate the funcitonlity that is provided by futureist directly in oslo.service and remove it at a later date seperate form the eventlet work.\n\nthis woudl allow use to complete the eventlet removeal and then decsope or elimiate oslo.service at a later date if we think removign the indriection has value and there are peopel to do it.\n\nat a quick glance i dont think there is a direct equivlent of loopingcall in futureist but i might be wrong\n\nsome applciation do use that directly but we likely could extended futureist with a executor indepened equivlent and proxy it in the same way.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"}],"source_content_type":"text/x-rst","patch_set":2,"id":"17066762_43de11d7","line":26,"range":{"start_line":25,"start_character":15,"end_line":26,"end_character":48},"updated":"2024-06-24 12:42:45.000000000","message":"I think these sentences are more related to the developer impact section.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8bacf87e_fbc8e56e","line":26,"range":{"start_line":25,"start_character":15,"end_line":26,"end_character":48},"in_reply_to":"17066762_43de11d7","updated":"2024-06-24 12:49:43.000000000","message":"Right. I will move it in the right section.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"84f0510c8b6a40c255ccd5d8971983440d2fa856","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The idea is to use oslo.service as a proxy that will make calls to cotyledon and futurist. This avoids reinventing the"},{"line_number":24,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":25,"context_line":"existing code. The project maintainer is reactive and reacts quickly to pull requests. We\u0027ll also be asking for the"},{"line_number":26,"context_line":"opportunity to be core developer on the project. This will also benefit cotyledeon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b52c03a7_d0451c8a","line":26,"range":{"start_line":25,"start_character":15,"end_line":26,"end_character":48},"in_reply_to":"8bacf87e_fbc8e56e","updated":"2024-06-24 13:14:13.000000000","message":"Done","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ee19cb48_6b6b7bc3","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"updated":"2024-06-24 12:42:45.000000000","message":"I think you have to give an overview of the future API before jumping directly into the implementation. By example the new backends namespace and you could describe what will the endpoints of the existing API impacted by such changes in the new namespaces.\n\nLet me give you a short example.\n\nThe current structure of oslo.service looks like to (I voluntareely shortened `tests` and `locale`):\n\n```\noslo_service\n├── eventlet_backdoor.py\n├── fixture.py\n├── _i18n.py\n├── __init__.py\n├── locale\n│   └── ...\n├── loopingcall.py\n├── _options.py\n├── periodic_task.py\n├── service.py\n├── sslutils.py\n├── systemd.py\n├── tests\n│   ├── ...\n├── threadgroup.py\n├── version.py\n└── wsgi.py\n```\n\nRodolpho and Sean suggested to add a new backend, so, at least, we will surely get something like:\n\n```\noslo_service\n├── backends\n│   ├── eventlet\n│   │   ├── eventlet_backdoor.py\n│   │   ├── loopingcall.py\n│   │   ├── periodic_task.py\n│   │   ├── service.py\n│   │   ├── sslutils.py\n│   │   ├── systemd.py\n│   │   ├── threadgroup.py\n│   │   ├── version.py\n│   │   └── wsgi.py\n│   ├── futyledon\n│       ├── loopingcall.py\n│       ├── periodic_task.py\n│       ├── service.py\n│       ├── sslutils.py\n│       ├── systemd.py\n│       ├── threadgroup.py\n│       ├── version.py\n│       └── wsgi.py\n├── eventlet_backdoor.py\n├── fixture.py\n├── _i18n.py\n├── __init__.py\n├── locale\n│   └── ...\n├── loopingcall.py\n├── _options.py\n├── periodic_task.py\n├── service.py\n├── sslutils.py\n├── systemd.py\n├── tests\n│   ├── ...\n├── threadgroup.py\n├── version.py\n└── wsgi.py\n```\n\nIn the new structure we can observe that:\n- the eventlet backdoor is only present in the eventlet backend\n- that each backend implements its own way interpretation of common features (wsgin periodic_task, system, sslutls, etc...)\n\nBy Example on the new futyledon backend:\n`oslo_service.periodic_task` of the will target `futurist.periodics`\nBut we still have to define the exact endpoints which are targetted from oslo.service to futurist.\n\nAs you can observe in the example above, a kind of facades remains available at the higher level. These facade would provide the right implementation by loading the backend defined by the users in their config file, like oslo.messaging, and like Rodolfo suggested: \n\nhttps://github.com/openstack/oslo.messaging/blob/master/setup.cfg#L55-L57\n\nUsers would continue to import oslo.service like it is made currently. The end usage would be transparent.\n\nWe also need to see if all the existing modules of oslo.service have to find a place into the both backends, or if some existing modules may be used in a transerval way by both backends. By example, maybe the `oslo_service.systemd` module do not really internally rely on eventlet, and so in this case, maybe it could remains at the higher level and remains common to both backends. I\u0027ve no idea, that\u0027s just an example to raise the point.\n\nThis is the kind of details that I expect to find in this kind of spec.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ded9a8652b3cb06c78fdf4e3494669da1ca28d3e","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f33afcb3_9a8c2606","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"in_reply_to":"00bbba16_8d6878f2","updated":"2024-06-25 08:42:46.000000000","message":"Right, Neutron is relying in oslo_service.systemd and calls \"notify_once\" twice: one in the WSGI server and another one in the OVS agent.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"df2ba4f67e50ca73762d288dcb1f67dc7abf0d11","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"00bbba16_8d6878f2","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"in_reply_to":"23c1cb90_1c618741","updated":"2024-06-24 14:15:40.000000000","message":"@Sean Thanks for your reply. I agree with you.\n\nBased on the existing top level modules, I think this spec should cover this kind of dispatch and overview. It will provide us a good overview and it will simplify the implementation.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"29b7f90444c7ce8ed24ea941c26ae4693f772d02","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"23c1cb90_1c618741","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"in_reply_to":"884bd2dc_804a16eb","updated":"2024-06-24 13:31:46.000000000","message":"ya so oslo_service.systemd functionlaity is provided by cotyledon\nhttps://github.com/sileht/cotyledon/blob/main/cotyledon/_service_manager.py#L409\n\nso we could just move that funcitonltiy into the eventlet backend \nim not sure if any application is using the systemd moduel direclty\n\ncodeseach say only one unit test in neutron \n\nhttps://codesearch.opendev.org/?q\u003doslo_service.systemd\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\n\nso i think we could make that an \"internal\" module that is not part of the exteranl api and make the current one backend sepcific.\n\nwe could make it generic and keep the api and have it delegetae but i am not sure that is requried.\n\nthe stucutre overall makes sense to me to by the way.\n\n\nby the way the wsgi.py and eventlet_backdoor.py modules i think cna be deprecated outright.\n\nalthough wsgi could be delegated to flask or https://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\n\nthat would at least provide a functionla reqpelcement without adding a dep.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f71b98de_a88a6013","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"in_reply_to":"d6b60311_9b1cfef4","updated":"2024-07-02 13:50:55.000000000","message":"About the oslo_service.systemd I confirm yes it\u0027s only a python vanilla module and yes it can stay a common module at the root level.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"884bd2dc_804a16eb","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"in_reply_to":"ee19cb48_6b6b7bc3","updated":"2024-06-24 12:49:43.000000000","message":"Ok I will add a structure, thanks a lot.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Another alternative is to deprecate oslo.service and replace it\u0027s use with cotyledon and futurist. This is also a good"},{"line_number":35,"context_line":"way to avoid having to maintain several projects. On the other hand, it does mean more changes for oslo.service users."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"For users, the modification will be transparent and there will be no change in calls. It\u0027s only the implementation that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d6b60311_9b1cfef4","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":23},"in_reply_to":"f33afcb3_9a8c2606","updated":"2024-07-02 13:09:53.000000000","message":"By looking at the internal implementation of the current version of `oslo_service.systemd` it seems to me that the code of this module remains Python vanilla, but... what about if oslo.service is monkey patched?\n\nIMO this module could remains a common module at the root level, and would not necessitate a specific implementation in both backends (eventlet, and futyledon), exact? \n\n@Daniel please can you confirm?","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":48,"context_line":"Performance Impact"},{"line_number":49,"context_line":"------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No performance impact."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b127dcae_9f49410f","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":22},"updated":"2024-06-24 12:42:45.000000000","message":"If I\u0027m right cotyledon is based on threading, so on a preemptive behavior.\nEventlet rely on greenlet which is based on cooperative coroutines, so, in all the case I won\u0027t expect the same performances.\n\nI\u0027ve no idea if the difference is significative, but I think we should highlight that point here.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ded9a8652b3cb06c78fdf4e3494669da1ca28d3e","unresolved":true,"context_lines":[{"line_number":48,"context_line":"Performance Impact"},{"line_number":49,"context_line":"------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No performance impact."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9259053b_57893298","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":22},"in_reply_to":"3f58560e_834854a2","updated":"2024-06-25 08:42:46.000000000","message":"Not only performance, but, as mentioned, the preemptive behaviour would affect \"lazy\" implementations that rely on the cooperative threads and don\u0027t implement locks. I\u0027m seeing that in Neutron, in many places. But I think that has been already mentioned in the TC document.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e47920596dc1a1bf207e54c15e3b11f2ee650bc0","unresolved":true,"context_lines":[{"line_number":48,"context_line":"Performance Impact"},{"line_number":49,"context_line":"------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No performance impact."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fd19bc4b_f0a82b29","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":22},"in_reply_to":"9259053b_57893298","updated":"2024-06-25 11:41:52.000000000","message":"using coperative treads via eventlet today does not remove the need for locks.\n\nall eventlet code that is portintally modifigng shared state shoud have a lock to day jsut as as if it was multithread. this soudn like neutron has preexisting bugs even when using eventlet. nova has quite a few locks specifically because you cannot asusme eventlet monkey patched code works like purely single threaded code.\n\nalmost all of the same data races can happen today due to context switches triggered by io.\n\nfor cpu bound code the performance shgould be identical\nfor io bound could the perfromance shoudl be simiar for the same number of eventlets/thread with a slight context swtich overehad in the thread case.\n\nthe reall deleta will be in memory use. likely the treaded approch will use more memory and as a result you would not be able to have as many posix threads as greenthread. the quest really is does that matter for the applciations.\n\nout side fo the api which we recommend running under a wsgi server anyway most of the damons dont do a lot of non io bound parallel work.\n\nim expecting the nova performance not to materially change but im not sure if memory usage will increase noticeably or not. since we are not creating worker processes but thread they will share the same shared data structures so really your just paying the overhead for thread local storage, cloned file descriptors/sockets and an OS stack frame. the green thread all had uerlsand stackframes anyway so that should mostly be a wash.\n\nthis shoudl be somethign we can messure in the ci jobs to some degree by looking at the data form the memroy tracker.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":48,"context_line":"Performance Impact"},{"line_number":49,"context_line":"------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No performance impact."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f58560e_834854a2","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":22},"in_reply_to":"b127dcae_9f49410f","updated":"2024-06-24 12:49:43.000000000","message":"Yes you\u0027re right.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"f011314ea30d59443d003f962dddc8278cf7c612","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Performance Impact"},{"line_number":49,"context_line":"------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No performance impact."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0f218152_548b007e","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":22},"in_reply_to":"fd19bc4b_f0a82b29","updated":"2024-06-25 11:46:40.000000000","message":"Done","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"No configuration impact."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Developer Impact"},{"line_number":59,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bcd1eed6_248f1195","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":24},"updated":"2024-06-24 12:42:45.000000000","message":"New backend is equal to new configuration.\nPlease details the impacts and the kind of changes we could expect at the config level.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"No configuration impact."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Developer Impact"},{"line_number":59,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"456e10d5_17d9d0fb","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":24},"in_reply_to":"3fe7d40f_b7717a71","updated":"2024-07-02 13:50:55.000000000","message":"I will check it.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"No configuration impact."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Developer Impact"},{"line_number":59,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e8860efb_ce7b59cd","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":24},"in_reply_to":"bcd1eed6_248f1195","updated":"2024-06-24 12:49:43.000000000","message":"Ok.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Configuration Impact"},{"line_number":54,"context_line":"--------------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"No configuration impact."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Developer Impact"},{"line_number":59,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fe7d40f_b7717a71","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":24},"in_reply_to":"e8860efb_ce7b59cd","updated":"2024-07-02 13:09:53.000000000","message":"This point remains opened.\nWhat do you propose?","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":80,"context_line":"Milestones"},{"line_number":81,"context_line":"----------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"None."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Work Items"},{"line_number":86,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ddadeaea_acabe3f4","line":83,"updated":"2024-06-24 12:42:45.000000000","message":"Would be good to set milestones, maybe ones based on Sean\u0027s proposal in the other comments, those looks realistic.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"84f0510c8b6a40c255ccd5d8971983440d2fa856","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Milestones"},{"line_number":81,"context_line":"----------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"None."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Work Items"},{"line_number":86,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"a38d9e91_ef7d66b8","line":83,"in_reply_to":"7d19da5b_4188f8b8","updated":"2024-06-24 13:14:13.000000000","message":"Done","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":80,"context_line":"Milestones"},{"line_number":81,"context_line":"----------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"None."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Work Items"},{"line_number":86,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7d19da5b_4188f8b8","line":83,"in_reply_to":"ddadeaea_acabe3f4","updated":"2024-06-24 12:49:43.000000000","message":"Yes right I would do it.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"43de513d84600892aef541585f0b1ad8ec4ae960","unresolved":true,"context_lines":[{"line_number":90,"context_line":"Documentation Impact"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"No documentation impact."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Dependencies"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"6f686bdd_09da0713","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":24},"updated":"2024-06-24 12:42:45.000000000","message":"New backend is equal to a new doc sections","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0e6eb04ee26ddd0525ab76695c7f881da28ebedf","unresolved":true,"context_lines":[{"line_number":90,"context_line":"Documentation Impact"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"No documentation impact."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Dependencies"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"536293e3_ed8be7dc","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":24},"in_reply_to":"6f686bdd_09da0713","updated":"2024-06-24 12:49:43.000000000","message":"Yes right.","commit_id":"b6c2dc7de6a9355b7619142e2537de3736d7f978"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4dd1bcb66282d470e0ff206cfbf977404501e89e","unresolved":true,"context_lines":[{"line_number":25,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":26,"context_line":"existing code."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Alternatives"},{"line_number":32,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"db56d158_232ffb28","line":29,"range":{"start_line":28,"start_character":1,"end_line":29,"end_character":45},"updated":"2024-06-26 08:04:21.000000000","message":"This sentence comes from the spec template [1]. It is given to orient people who propose new specs, we don\u0027t we have to keep it there. This is question that the authors of specs should answer, and you already put few words above about the context.\n\nhttps://github.com/openstack/oslo-specs/blob/b440f3dccd2edf6e55a5384b0364be69a291a8a2/specs/template.rst?plain\u003d1#L57","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"a505cf03c9f29052b4e20a61dc0bb3d1e267911e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"wheel, and allows us to adapt the project and have two libraries doing the same thing. We benefit from the existence of"},{"line_number":26,"context_line":"existing code."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"If this is one part of a larger effort make it clear where this piece ends. In"},{"line_number":29,"context_line":"other words, what\u0027s the scope of this effort?"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Alternatives"},{"line_number":32,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8afb06ae_80af3d42","line":29,"range":{"start_line":28,"start_character":1,"end_line":29,"end_character":45},"in_reply_to":"db56d158_232ffb28","updated":"2024-06-26 08:45:35.000000000","message":"Done","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c83a5bd228b7910c93016a4d8e782378ba9819a5","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new backend will be added. So we\u0027ll have the current evetlet backends and we\u0027ll add the backend for cotyledon."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Security impact"},{"line_number":43,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b33703cf_85405d62","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":112},"updated":"2024-06-25 17:28:34.000000000","message":"Thanks Daniel for this new patch set.\n\nAs I said in my previous comment, this section should be used to provide an overview of the changes that will be implemented all over the existing API.\n\nWe should see this section as an architectural overview, where each submodule is more or less described and where each submodule is put in the face of its remplacement.\n\nIf an oslo.service submodule is public and provide an API, this section should provide the mapping between the existing API and the modules from cotyledon or futurist that you plan to target into this mapping.\n\nFor now there is no existing backend, so there is no \"current eventlet backend\", this what we need to define here and we need to define what we put in this eventlet backend and also what we put in the new one, the new backend.\n\nWe need to define what can be/remains common and what should be moved to backends. Which submodule could remains where it is and which submodule is impacted by the backendification.\n\nThis is the kind of details that we expect to find by going through a spec.\n\nYou can inspire of my comment above as a starting point to write this overview.","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"d44825ab99a0d30d8274c8a003e40be9622b5d67","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new backend will be added. So we\u0027ll have the current evetlet backends and we\u0027ll add the backend for cotyledon."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Security impact"},{"line_number":43,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"aca59083_7c391c5d","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":112},"in_reply_to":"5877b2d8_bdc0bb96","updated":"2024-06-26 11:42:07.000000000","message":"Thanks Daniel for this new patch set.\n\nI\u0027m sorry Daniel, but I don\u0027t think this is \"Done\".\nI don\u0027t see any changes that reflect my requests above.\n\nHaving the tree overview is a first step but we need more than that.\nWe need to define the mapping for the public endpoints from oslo.service.\n\nAgain, this section should give an overview of all the mappings.\nThis section should also define which submodule of oslo.service remains common or not.\n\nCotyledon and futurist have their own API, the goal of this proposal is more or less to find the mapping between all these libs. We shouldn\u0027t leave this kind of architectural details to the implementation step. If we define it properly here the implementation will be straightforward for you.\n\nMy tree was just a quicky and dirty example that don\u0027t reflect the reality. That\u0027s the works that we have to do here.\n\nYou have to analyze the public API of oslo.service and you have to inspect cotyledon and futurist to find the calling points which will be proxified by the new backend (futyledon in my example).\n\nDo not hesitate to ask questions if you need more info we will be happy to help you.","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f2937b0e7043a114d3c61779edf9529d063c8e06","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new backend will be added. So we\u0027ll have the current evetlet backends and we\u0027ll add the backend for cotyledon."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Security impact"},{"line_number":43,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"447a1489_0443d214","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":112},"in_reply_to":"7b84e84f_bb16a953","updated":"2024-06-26 12:18:45.000000000","message":"The same should be done for all the other submodules (systemd, wsgi, etc...)","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"a505cf03c9f29052b4e20a61dc0bb3d1e267911e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new backend will be added. So we\u0027ll have the current evetlet backends and we\u0027ll add the backend for cotyledon."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Security impact"},{"line_number":43,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5877b2d8_bdc0bb96","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":112},"in_reply_to":"8ca73210_f219787d","updated":"2024-06-26 08:45:35.000000000","message":"Done","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"34f9732f3c478355e16a77d8473916d7a4074de7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new backend will be added. So we\u0027ll have the current evetlet backends and we\u0027ll add the backend for cotyledon."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Security impact"},{"line_number":43,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7b84e84f_bb16a953","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":112},"in_reply_to":"aca59083_7c391c5d","updated":"2024-06-26 12:17:24.000000000","message":"Here is an example:\n\nImaging the following hypothetical structure for the futyledon submodule.\n\n```oslo_service\n   ...\n    │   ├── futyledon\n    │       ├── loopingcall.py\n    │       ├── periodic_task.py\n    │       ├── service.py\n    │       ├── sslutils.py\n    │       ├── systemd.py\n    │       ├── threadgroup.py\n    │       ├── version.py\n    │       └── wsgi.py\n   ...\n```\nFor each submodule we need to define the mapping.\n\nExample of snippet for the `oslo_service.futyledon.service`:\n\nThe public oslo.service API endpoint `oslo_service.service.Launcher` [1] in the case of using the futyledon backend, would delegate to `oslo_service.futyledon.service.Launcher` which would be a mapping for `cotyledon.ServieManager` [2].\n\netc... etc...\n\nAgain, this is just an hypothetical example that could don\u0027t reflect the reality.\nThis example is just a part of the definition of the `oslo_service.futyledon.service` submodule.\n\nThe API of this submodule would surely also define;\n\n- https://docs.openstack.org/oslo.service/latest/reference/service.html#oslo_service.service.ProcessLauncher\n- https://docs.openstack.org/oslo.service/latest/reference/service.html#oslo_service.service.Service\n- https://docs.openstack.org/oslo.service/latest/reference/service.html#oslo_service.service.ServiceLauncher\n- etc.. etc...\n\nPerhaps some endpoints will delegate to Cotyledon and some other to Futurist, I don\u0027t know.\n\nPerhaps some mapping do not have exactly the same signatures (not the same parameters), I don\u0027t know.\n\nThat\u0027s the kind of questions that we should answer here.\n\n[1] https://docs.openstack.org/oslo.service/latest/reference/service.html#oslo_service.service.Launcher\n[2} https://cotyledon.readthedocs.io/en/latest/api.html#cotyledon.ServiceManager","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4dd1bcb66282d470e0ff206cfbf977404501e89e","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Impact on Existing APIs"},{"line_number":38,"context_line":"-----------------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new backend will be added. So we\u0027ll have the current evetlet backends and we\u0027ll add the backend for cotyledon."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Security impact"},{"line_number":43,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8ca73210_f219787d","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":112},"in_reply_to":"b33703cf_85405d62","updated":"2024-06-26 08:04:21.000000000","message":"Also, to be exact, I think we want to add a backend attached to Cotyledon AND futuristic, not only for Cotyledon as you suggested in this sentence. My understanding is that we need both, Cotyledon and futurist, to be able replace Eventlet, isn\u0027t?\n\nCorrect me if I\u0027m wrong.","commit_id":"9347f00a316d46189f0a5a4f1daa01513a3ac89c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":45,"context_line":"Impact on Existing APIs"},{"line_number":46,"context_line":"-----------------------"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"A new backend will be added. So we will have the current eventlet backend and we will add the backend for cotyledon"},{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"}],"source_content_type":"text/x-rst","patch_set":6,"id":"91933593_199cacd9","line":48,"range":{"start_line":48,"start_character":29,"end_line":48,"end_character":73},"updated":"2024-07-02 13:09:53.000000000","message":"There is no backend at all for now in oslo.service, the eventlet one have to been created too.\n\nFor now, oslo.service is eventlet.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":45,"context_line":"Impact on Existing APIs"},{"line_number":46,"context_line":"-----------------------"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"A new backend will be added. So we will have the current eventlet backend and we will add the backend for cotyledon"},{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1163f597_a68c11db","line":48,"range":{"start_line":48,"start_character":29,"end_line":48,"end_character":73},"in_reply_to":"91933593_199cacd9","updated":"2024-07-02 13:50:55.000000000","message":"Yes right I will fix the sentence here.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"A new backend will be added. So we will have the current eventlet backend and we will add the backend for cotyledon"},{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":52,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":53,"context_line":"does not seem to be"},{"line_number":54,"context_line":"`used \u003chttps://codesearch.opendev.org/?q\u003doslo_service.eventlet_backdoor\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\u003e`_"}],"source_content_type":"text/x-rst","patch_set":6,"id":"13c07b80_17409222","line":51,"range":{"start_line":50,"start_character":101,"end_line":51,"end_character":18},"updated":"2024-07-02 13:09:53.000000000","message":"I\u0027m not sure to follow you here:\ndo we want to deprecate it and remove it from oslo.service?\nor do we want to replace it with flask internally into oslo.service? (delegate to flask like suggested by Sean in the comments above)\nor do we want to encourage the user of this module to replace it by flask on their side?\n\nDepending on your response, if an user decide to load the futyledon backend, how he can realize an incremental migration if we don\u0027t provide a wsgi replacement into the futyledon backend? Simply loading futyledon module would drop the wsgi feature and the eventlet one would not be accessible as the backend would not be loaded... How to solve that?\n\nOur intention, through the reading of this sentence, is not clear.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"A new backend will be added. So we will have the current eventlet backend and we will add the backend for cotyledon"},{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":52,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":53,"context_line":"does not seem to be"},{"line_number":54,"context_line":"`used \u003chttps://codesearch.opendev.org/?q\u003doslo_service.eventlet_backdoor\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\u003e`_"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9c0fd89c_6e12d104","line":51,"range":{"start_line":50,"start_character":101,"end_line":51,"end_character":18},"in_reply_to":"13c07b80_17409222","updated":"2024-07-02 13:50:55.000000000","message":"I mean as proposed Sean delegate to flask I will fix the sentence to be more clear about it.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":52,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":53,"context_line":"does not seem to be"},{"line_number":54,"context_line":"`used \u003chttps://codesearch.opendev.org/?q\u003doslo_service.eventlet_backdoor\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\u003e`_"},{"line_number":55,"context_line":"in openstack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The new architecture::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"8bb49c74_cdf70961","line":54,"range":{"start_line":52,"start_character":50,"end_line":54,"end_character":119},"updated":"2024-07-02 13:09:53.000000000","message":"Well an eventlet backdoor is something that you load in pdb or during debug session, see the eventlet documentation https://eventlet.readthedocs.io/en/latest/modules/backdoor.html\n\nIt raise the following questions:\n\n1) in the tree below, do we have reasons to still have the `eventlet_backdoor` at the root level (`oslo_service`)? I don\u0027t think... this submodule is really specific to eventlet and we won\u0027t have similar feature in the futyledon backend.\n\n2) do we want to only deprecate the backdoor or the entire eventlet backend?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":52,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":53,"context_line":"does not seem to be"},{"line_number":54,"context_line":"`used \u003chttps://codesearch.opendev.org/?q\u003doslo_service.eventlet_backdoor\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\u003e`_"},{"line_number":55,"context_line":"in openstack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The new architecture::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9675de59_8075db29","line":54,"range":{"start_line":52,"start_character":50,"end_line":54,"end_character":119},"in_reply_to":"8bb49c74_cdf70961","updated":"2024-07-02 13:50:55.000000000","message":"I confirm we will not have the same feature for the other backend but only for eventlet one. We will deprecated the entire eventlet backend.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":true,"context_lines":[{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":52,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":53,"context_line":"does not seem to be"},{"line_number":54,"context_line":"`used \u003chttps://codesearch.opendev.org/?q\u003doslo_service.eventlet_backdoor\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\u003e`_"},{"line_number":55,"context_line":"in openstack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The new architecture::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"b7cb8005_ae6ab107","line":54,"range":{"start_line":52,"start_character":50,"end_line":54,"end_character":119},"in_reply_to":"9675de59_8075db29","updated":"2024-07-03 11:44:49.000000000","message":"So, your proposal should be updated accordingly to your answer. The sentence still speak about an isolated deprecation of the `eventlet_backdoor`.\n\nI think you should rather explain that the entire eventlet backend will be deprecated and then removed. But IMO this details should be put in the `Implementation details` section, rather than into the API section.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fba2b5f88face54c864f8a4a53c938c53e236b55","unresolved":true,"context_lines":[{"line_number":49,"context_line":"and futurist."},{"line_number":50,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":51,"context_line":"replaced by `flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":52,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":53,"context_line":"does not seem to be"},{"line_number":54,"context_line":"`used \u003chttps://codesearch.opendev.org/?q\u003doslo_service.eventlet_backdoor\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\u003e`_"},{"line_number":55,"context_line":"in openstack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The new architecture::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"42b54b9c_de817cb3","line":54,"range":{"start_line":52,"start_character":50,"end_line":54,"end_character":119},"in_reply_to":"b7cb8005_ae6ab107","updated":"2024-07-03 12:28:07.000000000","message":"Ok I will move the sentence and said the entire eventlet backend will be deprecated.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":66,"context_line":"    │   │   ├── sslutils.py"},{"line_number":67,"context_line":"    │   │   ├── systemd.py"},{"line_number":68,"context_line":"    │   │   ├── threadgroup.py"},{"line_number":69,"context_line":"    │   │   ├── version.py"},{"line_number":70,"context_line":"    │   │   └── wsgi.py"},{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7d9656a9_9c8af0ff","line":69,"range":{"start_line":69,"start_character":16,"end_line":69,"end_character":23},"updated":"2024-07-02 13:09:53.000000000","message":"What is the goal of this module?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":66,"context_line":"    │   │   ├── sslutils.py"},{"line_number":67,"context_line":"    │   │   ├── systemd.py"},{"line_number":68,"context_line":"    │   │   ├── threadgroup.py"},{"line_number":69,"context_line":"    │   │   ├── version.py"},{"line_number":70,"context_line":"    │   │   └── wsgi.py"},{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"95b76c10_fc14626d","line":69,"range":{"start_line":69,"start_character":16,"end_line":69,"end_character":23},"in_reply_to":"7d9656a9_9c8af0ff","updated":"2024-07-02 13:50:55.000000000","message":"Give the version of the package but yes right that must be move at the root level.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    │   │   ├── version.py"},{"line_number":70,"context_line":"    │   │   └── wsgi.py"},{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d308ed03_eabd57ff","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":27},"updated":"2024-07-02 13:09:53.000000000","message":"What is your strategy for this feature?\nThis module heavily rely on greenlet and greenthreads to run the passed methods. \n\nWhat do you plan to use as replacement?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    │   │   ├── version.py"},{"line_number":70,"context_line":"    │   │   └── wsgi.py"},{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"79c00991_d87d1ddd","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":27},"in_reply_to":"d308ed03_eabd57ff","updated":"2024-07-02 13:50:55.000000000","message":"I\u0027m still working on that question.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    │   │   └── wsgi.py"},{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"43f2241e_03f38c20","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":29},"updated":"2024-07-02 13:09:53.000000000","message":"What are the binding between the public methods of this module and the futurist module?\n\nBy Example:\n\nThe high level `oslo_service.periodic_task` module the will target `oslo_service.futyledon.periodic_tasks` which will target `futurist.periodics`\n\nWhat are the binding between `oslo_service.futyledon.periodic_tasks` and `futurist.periodics`.\n\nAgain this is just an hypothetical example do not take it as the true, this example is just there to give you an identification entry point.\n\nSo my questions are:\n\nwhat are the binding?\n\nIs the expected parameters passed to the methods are the same? Do we need to modify the public API to match the possible addition of new parameters?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    │   │   └── wsgi.py"},{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6bb14255_29d9b6a5","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":29},"in_reply_to":"43f2241e_03f38c20","updated":"2024-07-02 13:50:55.000000000","message":"About the binding yes it\u0027s more or less that, but ok I will add a binding list in the document.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"0d7015a2_a2a4b834","line":74,"range":{"start_line":74,"start_character":16,"end_line":74,"end_character":23},"updated":"2024-07-02 13:09:53.000000000","message":"What are the binding between the public methods of this module and the cotyledon module?\n\nExample of snippet for the oslo_service.futyledon.service:\n\nThe public oslo.service API endpoint `oslo_service.service.Launcher` [1] in the case of using the futyledon backend, would delegate to `oslo_service.futyledon.service.Launcher` which would be, perhaps, a mapping for `cotyledon.ServieManager` [2]. Again this is just an hypothetical example do not take it as the true, this example is just there to give you an identification entry point.\n\nSo my questions are:\n\nwhat are the binding?\n\nIs the expected parameters passed to the methods are the same? Do we need to modify the public API to match the possible addition of new parameters?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    │   ├── futyledon"},{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7d0d868b_294c7790","line":74,"range":{"start_line":74,"start_character":16,"end_line":74,"end_character":23},"in_reply_to":"0d7015a2_a2a4b834","updated":"2024-07-02 13:50:55.000000000","message":"I will add a binding list.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":72,"context_line":"    │       ├── loopingcall.py"},{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"b544546c_e7385b28","line":75,"range":{"start_line":75,"start_character":16,"end_line":75,"end_character":24},"updated":"2024-07-02 13:09:53.000000000","message":"Is the addition of this underscore mean that this submodule would become private?\n\nAlso this module rely on sockets, the current implementation of this module surely rely on the Eventlet monkey patching, and so on non-blocking sockets. If people start to use the futyledon implementation of this module, they will use Python vanilla sockets, in other words, blocking sockets. How do you plan to allow non-blocking socket?\n\n@ralonsoh@redhat.com as you already use it, do you know if non blocking socket are mandatory?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c32bcb6f_e7b1a872","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":27},"updated":"2024-07-02 13:09:53.000000000","message":"What is your strategy for this feature?\nThis module heavily rely on eventlet and greenpool [1] to run the passed methods. \n\nWhat do you plan to use as replacement?\n\nGreenpools are tailored to works with I/O-related tasks, I suspsect those won\u0027t block. How do you plan to implement a similar behavior?\n\nAgain, the goal of specs is to answer this kind of question.\n\n[1] https://eventlet.readthedocs.io/en/latest/modules/greenpool.html#eventlet.greenpool.GreenPile","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    │       ├── periodic_task.py"},{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7883bb16_13a5a842","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":27},"in_reply_to":"c32bcb6f_e7b1a872","updated":"2024-07-02 13:50:55.000000000","message":"Still working on the subject.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"a6283b22_46dcde5c","line":77,"range":{"start_line":77,"start_character":16,"end_line":77,"end_character":23},"updated":"2024-07-02 13:09:53.000000000","message":"What is the goal of this module?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"662e4781_2efa956e","line":77,"range":{"start_line":77,"start_character":16,"end_line":77,"end_character":23},"in_reply_to":"2b756a81_8e3be762","updated":"2024-07-03 11:44:49.000000000","message":"So, your proposal should be updated to reflect that.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fba2b5f88face54c864f8a4a53c938c53e236b55","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d587b98c_b56275dc","line":77,"range":{"start_line":77,"start_character":16,"end_line":77,"end_character":23},"in_reply_to":"662e4781_2efa956e","updated":"2024-07-03 12:28:07.000000000","message":"Yes I will changed it. Like I said I will add a binding and update that part a bit later.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    │       ├── service.py"},{"line_number":75,"context_line":"    │       ├── _systemd.py"},{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"}],"source_content_type":"text/x-rst","patch_set":6,"id":"2b756a81_8e3be762","line":77,"range":{"start_line":77,"start_character":16,"end_line":77,"end_character":23},"in_reply_to":"a6283b22_46dcde5c","updated":"2024-07-02 13:50:55.000000000","message":"I have already answer about it.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"},{"line_number":81,"context_line":"    ├── __init__.py"},{"line_number":82,"context_line":"    ├── locale"}],"source_content_type":"text/x-rst","patch_set":6,"id":"61258a36_3b408bc8","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":15},"updated":"2024-07-02 13:09:53.000000000","message":"What\u0027s about this submodule?\nIs this submodule still required?\nIf yes, is this submodule required by both backends (eventlet and futyledon)?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"19fbcda0a53d7efded8bda0f48c4c1357d870275","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"},{"line_number":81,"context_line":"    ├── __init__.py"},{"line_number":82,"context_line":"    ├── locale"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f7b154cc_4fe79e71","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":15},"in_reply_to":"466e7795_ef33af67","updated":"2024-07-02 14:51:07.000000000","message":"I agree with you, it seems really specific to Eventlet.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    │       ├── threadgroup.py"},{"line_number":77,"context_line":"    │       ├── version.py"},{"line_number":78,"context_line":"    ├── eventlet_backdoor.py"},{"line_number":79,"context_line":"    ├── fixture.py"},{"line_number":80,"context_line":"    ├── _i18n.py"},{"line_number":81,"context_line":"    ├── __init__.py"},{"line_number":82,"context_line":"    ├── locale"}],"source_content_type":"text/x-rst","patch_set":6,"id":"466e7795_ef33af67","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":15},"in_reply_to":"61258a36_3b408bc8","updated":"2024-07-02 13:50:55.000000000","message":"It\u0027s a fixture to mock wait method loopingcall that can be move in the eventlet backend. I don\u0027t think it\u0027s required by both backend.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":139,"context_line":"Milestones"},{"line_number":140,"context_line":"----------"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* 2024.2: Add a new optional cotyledon and futurist backend"},{"line_number":143,"context_line":"* 2025.1: Make the cotyledon backend as a default one and deprecate the eventlet one"},{"line_number":144,"context_line":"* 2025.2/2026.1: Remove eventlet backend"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"62501e6b_e2d7a8f5","line":142,"range":{"start_line":142,"start_character":20,"end_line":142,"end_character":59},"updated":"2024-07-02 13:09:53.000000000","message":"and also create an eventlet backend from the existing code...","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":139,"context_line":"Milestones"},{"line_number":140,"context_line":"----------"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* 2024.2: Add a new optional cotyledon and futurist backend"},{"line_number":143,"context_line":"* 2025.1: Make the cotyledon backend as a default one and deprecate the eventlet one"},{"line_number":144,"context_line":"* 2025.2/2026.1: Remove eventlet backend"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9f521ccb_3e0924eb","line":142,"range":{"start_line":142,"start_character":20,"end_line":142,"end_character":59},"in_reply_to":"62501e6b_e2d7a8f5","updated":"2024-07-02 13:50:55.000000000","message":"Ok.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c05466ffddcfdff6ee67f8cfedd86a74bf552bd4","unresolved":true,"context_lines":[{"line_number":151,"context_line":"Documentation Impact"},{"line_number":152,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Documentation will be added for the new backend. The idea is to have as few changes as possible, but this still"},{"line_number":155,"context_line":"requires documentation with examples."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Dependencies"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4d1dd7_e033ed35","line":155,"range":{"start_line":154,"start_character":1,"end_line":155,"end_character":37},"updated":"2024-07-03 09:51:39.000000000","message":"One think that I still try to understand is how will be transitionned the usage from one backend (the eventlet one) to the other backend (the futyledon)?\n\nIf I correctly understood the various discussions, we will have one config option that will allow to select the backend to use, exact?\n\nNow imagine a user switching from one backend to an other without adapting his code. If I correctly understood your proposal, only the `eventlet_backdoor` module will be removed, exact?\n\nBut, if more module are removed, and if the code of the user is not adapted to such changes, what will happens?\n\nIs it will failed?\nIs the doc will reference module available for one or the other backend?\nIs the doc will propose a kind of migration guide?\nIs the new backend will mock the non existing backends and warn about their removal?","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"eeab54acd0ea1052e53dfbfa3e1598c6f424f811","unresolved":true,"context_lines":[{"line_number":151,"context_line":"Documentation Impact"},{"line_number":152,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Documentation will be added for the new backend. The idea is to have as few changes as possible, but this still"},{"line_number":155,"context_line":"requires documentation with examples."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Dependencies"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6a5f7870_82fd62f8","line":155,"range":{"start_line":154,"start_character":1,"end_line":155,"end_character":37},"in_reply_to":"1a4d1dd7_e033ed35","updated":"2024-07-03 10:00:24.000000000","message":"The idea is to have the less change possible for the user and be able to switch to new backend without change if it\u0027s possible.\nYes a migration documentation will be added.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9e628d18ee4c04bafd0a145b3173a85efadd8211","unresolved":true,"context_lines":[{"line_number":157,"context_line":"Dependencies"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"A new library cotyledon."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"References"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f7d275a_92ca7698","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":24},"updated":"2024-07-02 13:09:53.000000000","message":"Is futurist already a requirement of oslo.service?\n\nDepending on your answer about my wsgi questions, perhaps we should also add flask...","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"c062e5a6ca2e4cb3e1a5a505b97286c29b8bf415","unresolved":true,"context_lines":[{"line_number":157,"context_line":"Dependencies"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"A new library cotyledon."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"References"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa6a2bfa_ee467efa","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":24},"in_reply_to":"7f7d275a_92ca7698","updated":"2024-07-02 13:50:55.000000000","message":"Yes futurist and flask is necessary.","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Dependencies"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"A new library cotyledon."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"References"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d5775b94_df7bdc4e","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":24},"in_reply_to":"fa6a2bfa_ee467efa","updated":"2024-07-03 11:44:49.000000000","message":"Done","commit_id":"c59f544b62b8f5f914897af687d0541648af2697"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":true,"context_lines":[{"line_number":49,"context_line":"A new futyledon package will be created to add the new implementation some will use the cotyledon and futurist"},{"line_number":50,"context_line":"libraries."},{"line_number":51,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":52,"context_line":"replaced by a module some will delegate to"},{"line_number":53,"context_line":"`flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":54,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":55,"context_line":"does not seem to be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"cd72bbed_f53495de","line":52,"range":{"start_line":52,"start_character":12,"end_line":52,"end_character":39},"updated":"2024-07-03 11:44:49.000000000","message":"I\u0027m sorry, but still I do not understand your intention here.\nIs the module you speak about part of the new futyledon backend? \n\nIs a person that currently use the `oslo_service.wsgi` module will still be able to use the oslo.service wsgi features if he decide to switch to the new futyledon backend?\n\nYou added flask into the requirements, so, I suppose you mean that you will use flask internally into the `futyledon` backend to replace the `eventlet.wsgi` module used into the `eventlet` backend... in this case this sentence should reflect this, a bit like you did for cotyledon and futurist early in this document...","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fba2b5f88face54c864f8a4a53c938c53e236b55","unresolved":true,"context_lines":[{"line_number":49,"context_line":"A new futyledon package will be created to add the new implementation some will use the cotyledon and futurist"},{"line_number":50,"context_line":"libraries."},{"line_number":51,"context_line":"Cotyledon does not offer a wsgi module, as there are already many webservers. The wsgi module can be deprecated and"},{"line_number":52,"context_line":"replaced by a module some will delegate to"},{"line_number":53,"context_line":"`flask \u003chttps://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server\u003e`_, which provides a"},{"line_number":54,"context_line":"functional alternative without adding dependency. The ``eventlet_backdoor`` module can also be deprecated. The module"},{"line_number":55,"context_line":"does not seem to be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bde72bb6_caf2da6a","line":52,"range":{"start_line":52,"start_character":12,"end_line":52,"end_character":39},"in_reply_to":"cd72bbed_f53495de","updated":"2024-07-03 12:28:07.000000000","message":"Yes to remplace the current wsgi the implementation will use flask.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":true,"context_lines":[{"line_number":113,"context_line":"Configuration Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Use the options for the configuration as we already currently do. We will add for example an array for the options for"},{"line_number":117,"context_line":"the periodic task ``futurist_periodic_tasks`` and the same will be apply for the rest."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Developer Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"363c3d10_fe876881","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":64},"updated":"2024-07-03 11:44:49.000000000","message":"How to switch from a backend to an other?\n\nThere is no backend for now so I\u0027m not sure what you refer to in this sentence.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fba2b5f88face54c864f8a4a53c938c53e236b55","unresolved":true,"context_lines":[{"line_number":113,"context_line":"Configuration Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Use the options for the configuration as we already currently do. We will add for example an array for the options for"},{"line_number":117,"context_line":"the periodic task ``futurist_periodic_tasks`` and the same will be apply for the rest."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Developer Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9b0b340e_47d32825","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":64},"in_reply_to":"363c3d10_fe876881","updated":"2024-07-03 12:28:07.000000000","message":"That will be an option.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a4502c576e8a7aa1ce7138a4771a7a95490ec6a1","unresolved":true,"context_lines":[{"line_number":113,"context_line":"Configuration Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Use the options for the configuration as we already currently do. We will add for example an array for the options for"},{"line_number":117,"context_line":"the periodic task ``futurist_periodic_tasks`` and the same will be apply for the rest."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Developer Impact"},{"line_number":120,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b046e39f_c5236969","line":117,"range":{"start_line":116,"start_character":66,"end_line":117,"end_character":86},"updated":"2024-07-03 11:44:49.000000000","message":"I do not understand why we should add an array of options for the periodic task... options cannot be passed over the oslo.service API at the function signature?\n\nFor now, there is only one specific configuration related to periodic tasks, and it is to define if the tasks should be ran into a dedicated process or not:\n\nhttps://docs.openstack.org/oslo.service/latest/configuration/index.html#periodic-task","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fba2b5f88face54c864f8a4a53c938c53e236b55","unresolved":true,"context_lines":[{"line_number":113,"context_line":"Configuration Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Use the options for the configuration as we already currently do. We will add for example an array for the options for"},{"line_number":117,"context_line":"the periodic task ``futurist_periodic_tasks`` and the same will be apply for the rest."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Developer Impact"},{"line_number":120,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"2fa66491_0932f94a","line":117,"range":{"start_line":116,"start_character":66,"end_line":117,"end_character":86},"in_reply_to":"b046e39f_c5236969","updated":"2024-07-03 12:28:07.000000000","message":"It seems my sentence is not clear I will rewrite it.","commit_id":"3c4fcc80ff99d0272d8f6f07d4f8faceaf11baf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"aac6d2035c1492c8e330a5e53f043d11846daad4","unresolved":true,"context_lines":[{"line_number":113,"context_line":"Configuration Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"An option will be added to choose the backend. The default option will be eventlet at the moment."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Developer Impact"},{"line_number":119,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d8c54daa_c472d0cb","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":46},"updated":"2024-07-05 13:10:13.000000000","message":"Please can you describe this section a bit more... with at least, the name of that new option, its type, and a tiny example of config snippet... \n\noslo.service propose numerous sections of configuration: \n\n- https://github.com/openstack/oslo.service/blob/master/oslo_service/_options.py\n- https://docs.openstack.org/oslo.service/latest/configuration/index.html\n\nSo, do you want to reuse one of these existing section? do you plan to create a new config section?\n\nGiving this kind of overview would help you to formalize your development and that could help us to better visualize what is your plan.\n\nConcerning the available types, you can select one from https://docs.openstack.org/oslo.config/latest/reference/defining.html#option-types\n\nUsually new options are a bit documented in specification.\nI think we all agree concerning the fact that a new option is needed, the question is more how it will be added. That\u0027s this kind of detail that a spec must bring.\n\nAlso, I didn\u0027t see any details about the wsgi options, is the flask based wsgi backend (futyledon) will need the same options than the eventlet wsgi backend? IMO no... many options of the actual wsgi backend seems specific to Eventlet. How to configure the wsgi backend if futyledon is loaded?\n\nhttps://docs.openstack.org/oslo.service/latest/configuration/index.html#wsgi\n\nDo not hesitate to have a look to this specification to find inspiration for your specification:\n\nhttps://review.opendev.org/c/openstack/oslo-specs/+/454897","commit_id":"8ce82a01c61c5fdba3364d641d2875301720edc2"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"616838f52a9f618d0bd7ca51cf5d1951aec356b8","unresolved":true,"context_lines":[{"line_number":113,"context_line":"Configuration Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"An option will be added to choose the backend. The default option will be eventlet at the moment."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Developer Impact"},{"line_number":119,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e628debb_25c9f0b4","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":46},"in_reply_to":"d8c54daa_c472d0cb","updated":"2024-07-08 10:33:49.000000000","message":"I will add a new section, because I don\u0027t think the existing passing with the new option. I will add a documentation and example for the new option.","commit_id":"8ce82a01c61c5fdba3364d641d2875301720edc2"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":159,"context_line":"Dependencies"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"The library cotyledon must be added for the workers part. The futurist library must be added for the periodic tasks. The"},{"line_number":163,"context_line":"flask dependency must be added for the support of wsgi."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"References"},{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3cb6bcb9_e9926320","line":163,"range":{"start_line":162,"start_character":117,"end_line":163,"end_character":55},"updated":"2024-07-09 16:53:46.000000000","message":"So you propose to totally remove wsgi features from the new backend (futyledon)","commit_id":"8ce82a01c61c5fdba3364d641d2875301720edc2"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"db670f73167a53e438c4473bf5c9f282cbc0a500","unresolved":true,"context_lines":[{"line_number":159,"context_line":"Dependencies"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"The library cotyledon must be added for the workers part. The futurist library must be added for the periodic tasks. The"},{"line_number":163,"context_line":"flask dependency must be added for the support of wsgi."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"References"},{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"a3d77ddf_2d90586c","line":163,"range":{"start_line":162,"start_character":117,"end_line":163,"end_character":55},"in_reply_to":"3cb6bcb9_e9926320","updated":"2024-07-10 11:04:11.000000000","message":"Replace it by an wsgi application.","commit_id":"8ce82a01c61c5fdba3364d641d2875301720edc2"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":28,"context_line":"Implementation details"},{"line_number":29,"context_line":"----------------------"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The module ``oslo_service.periodic_task`` will be replace by ``oslo.service.futyledon.periodic_task`` module. The new"},{"line_number":32,"context_line":"backend will use futurist to implement periodic tasks."},{"line_number":33,"context_line":"The class ``oslo_service.periodic_task`` will be a proxy to the class ``futurist.periodics.PeriodicWorker`` via the new"},{"line_number":34,"context_line":"backend."}],"source_content_type":"text/x-rst","patch_set":9,"id":"a574d629_5247244e","line":31,"range":{"start_line":31,"start_character":50,"end_line":31,"end_character":57},"updated":"2024-07-09 16:53:46.000000000","message":"replaced","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":32,"context_line":"backend will use futurist to implement periodic tasks."},{"line_number":33,"context_line":"The class ``oslo_service.periodic_task`` will be a proxy to the class ``futurist.periodics.PeriodicWorker`` via the new"},{"line_number":34,"context_line":"backend."},{"line_number":35,"context_line":"The module ``olso_service.service`` will be replace by ``oslo_service.futyledon.service`` module. The new backend will"},{"line_number":36,"context_line":"use cotyledon to implement the workers."},{"line_number":37,"context_line":"The main difference between ``oslo_service.periodic_task`` and ``oslo_service.loopincall`` is the ``periodic_task`` is an"},{"line_number":38,"context_line":"infinite loop and the ``loopingcall`` is until an action. The new implementation for ``oslo_service.loopingcall`` can"}],"source_content_type":"text/x-rst","patch_set":9,"id":"94a956ce_f801ca3f","line":35,"range":{"start_line":35,"start_character":44,"end_line":35,"end_character":51},"updated":"2024-07-09 16:53:46.000000000","message":"replaced","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":35,"context_line":"The module ``olso_service.service`` will be replace by ``oslo_service.futyledon.service`` module. The new backend will"},{"line_number":36,"context_line":"use cotyledon to implement the workers."},{"line_number":37,"context_line":"The main difference between ``oslo_service.periodic_task`` and ``oslo_service.loopincall`` is the ``periodic_task`` is an"},{"line_number":38,"context_line":"infinite loop and the ``loopingcall`` is until an action. The new implementation for ``oslo_service.loopingcall`` can"},{"line_number":39,"context_line":"threading module from python."},{"line_number":40,"context_line":"The new implementation for the ``oslo_service.threadgroup`` can also use the the threading module from python."},{"line_number":41,"context_line":"The ``oslo_service.wsgi`` and ``oslo_service.sslutils`` can be deprecated and their options too."},{"line_number":42,"context_line":"In the new implementation instead have a new ``wsgi`` module we can use wsgi application and run the application by"}],"source_content_type":"text/x-rst","patch_set":9,"id":"0419a19c_4eb10b7e","line":39,"range":{"start_line":38,"start_character":58,"end_line":39,"end_character":29},"updated":"2024-07-09 16:53:46.000000000","message":"Sorry I do not understand that sentence...\nDo you mean that the loopingcall will be based on the stdlib threading module?","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":37,"context_line":"The main difference between ``oslo_service.periodic_task`` and ``oslo_service.loopincall`` is the ``periodic_task`` is an"},{"line_number":38,"context_line":"infinite loop and the ``loopingcall`` is until an action. The new implementation for ``oslo_service.loopingcall`` can"},{"line_number":39,"context_line":"threading module from python."},{"line_number":40,"context_line":"The new implementation for the ``oslo_service.threadgroup`` can also use the the threading module from python."},{"line_number":41,"context_line":"The ``oslo_service.wsgi`` and ``oslo_service.sslutils`` can be deprecated and their options too."},{"line_number":42,"context_line":"In the new implementation instead have a new ``wsgi`` module we can use wsgi application and run the application by"},{"line_number":43,"context_line":"``mod_wsgi`` or something similair."}],"source_content_type":"text/x-rst","patch_set":9,"id":"57502bb7_deed5c91","line":40,"range":{"start_line":40,"start_character":77,"end_line":40,"end_character":110},"updated":"2024-07-09 16:53:46.000000000","message":"Make sense.\nWhat will replace the greenpool? ThreadPoolExecutor [1]?\n\n[1] https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":39,"context_line":"threading module from python."},{"line_number":40,"context_line":"The new implementation for the ``oslo_service.threadgroup`` can also use the the threading module from python."},{"line_number":41,"context_line":"The ``oslo_service.wsgi`` and ``oslo_service.sslutils`` can be deprecated and their options too."},{"line_number":42,"context_line":"In the new implementation instead have a new ``wsgi`` module we can use wsgi application and run the application by"},{"line_number":43,"context_line":"``mod_wsgi`` or something similair."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Alternatives"},{"line_number":46,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3b53d6ac_6295eea8","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":35},"updated":"2024-07-09 16:53:46.000000000","message":"You mean that we will have an external (external to oslo.service) wsgi library (flask etc) that services may decide or not to use?","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"db670f73167a53e438c4473bf5c9f282cbc0a500","unresolved":true,"context_lines":[{"line_number":39,"context_line":"threading module from python."},{"line_number":40,"context_line":"The new implementation for the ``oslo_service.threadgroup`` can also use the the threading module from python."},{"line_number":41,"context_line":"The ``oslo_service.wsgi`` and ``oslo_service.sslutils`` can be deprecated and their options too."},{"line_number":42,"context_line":"In the new implementation instead have a new ``wsgi`` module we can use wsgi application and run the application by"},{"line_number":43,"context_line":"``mod_wsgi`` or something similair."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Alternatives"},{"line_number":46,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fb2c7d9b_00168f97","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":35},"in_reply_to":"3b53d6ac_6295eea8","updated":"2024-07-10 11:04:11.000000000","message":"We will implement a app.py[1] as do aodh or heat for example. For that we can use paste, pecan, uwsgi or whatever. \n\n[1] https://github.com/openstack/aodh/blob/master/aodh/api/app.py","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8f5a50704fa65487733d09efb6d21ea2d86d87ac","unresolved":true,"context_lines":[{"line_number":109,"context_line":"Configuration Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"We will duplicate the options for wsgi and ssl but at the at the end we can depracte them."},{"line_number":113,"context_line":"We will not add a new option to choose the backend and the users can import directly the backend they would like to use."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fc7a8850_291b176e","line":112,"range":{"start_line":112,"start_character":0,"end_line":112,"end_character":90},"updated":"2024-07-09 16:53:46.000000000","message":"I\u0027m sorry but I no longer follow you at all... at line 41-43 ou propose to deprecate the wsgi and the ssl modules, so, if I follow you, we won\u0027t have anymore any wsgi and any ssl modules into futyledon, isn\u0027t?\n\nFor this reason, I do not understand why you propose to duplicate the options of these features (the wsgi and the ssl modules).","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6b24d31da8bd2bb73f5a76a368dcc46eaeca66fe","unresolved":true,"context_lines":[{"line_number":109,"context_line":"Configuration Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"We will duplicate the options for wsgi and ssl but at the at the end we can depracte them."},{"line_number":113,"context_line":"We will not add a new option to choose the backend and the users can import directly the backend they would like to use."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"268e3328_657048c7","line":112,"range":{"start_line":112,"start_character":0,"end_line":112,"end_character":90},"in_reply_to":"0dc187f8_48285d4a","updated":"2024-07-10 14:43:18.000000000","message":"Do you mean we somehow pass these options to WSGI application framework like uwsgi ? I don\u0027t thin it\u0027s really possible.\nWhat I was expecting is just deprecating these wsgi and ssl options because we directly deprecate wsgi module dependent on eventlet (and ssl module which was created for wsgi). Users should update their deployment to use such external WSGI framework and use the options in the framework they use (like options of uwsgi).","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c259b191c7897841eaf1a566a0cdcfa811e0d1b","unresolved":true,"context_lines":[{"line_number":109,"context_line":"Configuration Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"We will duplicate the options for wsgi and ssl but at the at the end we can depracte them."},{"line_number":113,"context_line":"We will not add a new option to choose the backend and the users can import directly the backend they would like to use."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"badf2696_c48306c7","line":112,"range":{"start_line":112,"start_character":0,"end_line":112,"end_character":90},"in_reply_to":"268e3328_657048c7","updated":"2024-07-12 12:50:09.000000000","message":"Ok right, I thought it was possible but actually no. So I will update that part.","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"db670f73167a53e438c4473bf5c9f282cbc0a500","unresolved":true,"context_lines":[{"line_number":109,"context_line":"Configuration Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"We will duplicate the options for wsgi and ssl but at the at the end we can depracte them."},{"line_number":113,"context_line":"We will not add a new option to choose the backend and the users can import directly the backend they would like to use."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"0dc187f8_48285d4a","line":112,"range":{"start_line":112,"start_character":0,"end_line":112,"end_character":90},"in_reply_to":"fc7a8850_291b176e","updated":"2024-07-10 11:04:11.000000000","message":"Again the idea is to limit the modification for the users and we can pass the options to the application uwsgi for example.","commit_id":"88d9d1d1a3a34e83d1b1d7dbf06872570cba5131"}]}
