governance/bbaae17cf99a1eca1f59dc22aa9...

464 lines
24 KiB
Plaintext

{
"comments": [
{
"unresolved": false,
"key": {
"uuid": "c7358d77_381d8cbd",
"filename": "/PATCHSET_LEVEL",
"patchSetId": 16
},
"lineNbr": 0,
"author": {
"id": 10342
},
"writtenOn": "2024-02-09T15:31:00Z",
"side": 1,
"message": "Some comments, but I think it\u0027s better to merge a plan and start moving than it is for us to make the plan perfect before landing it.",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": false,
"key": {
"uuid": "c5fae398_374ae706",
"filename": "/PATCHSET_LEVEL",
"patchSetId": 16
},
"lineNbr": 0,
"author": {
"id": 16137
},
"writtenOn": "2024-03-06T18:43:45Z",
"side": 1,
"message": "I read through the goal in it\u0027s entirety again today and it looks good, let\u0027s fill up our minds with positive energy and steam ahead!",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": false,
"key": {
"uuid": "cced458c_5ae80448",
"filename": "/PATCHSET_LEVEL",
"patchSetId": 16
},
"lineNbr": 0,
"author": {
"id": 28522
},
"writtenOn": "2024-03-11T09:36:05Z",
"side": 1,
"message": "Hello, any updates?",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": false,
"key": {
"uuid": "75f0191c_db55e591",
"filename": "/PATCHSET_LEVEL",
"patchSetId": 16
},
"lineNbr": 0,
"author": {
"id": 7166
},
"writtenOn": "2024-03-29T08:17:14Z",
"side": 1,
"message": "Honestly, I don\u0027t know what to vote here, because I don\u0027t know whether asyncio is the best option for our usage. I think the usecases can be different between services.\n\nAlso, I\u0027m a bit afraid of the performance, so I want to make sure that if we accept this goal, it should be only some opt-in modification, as we would want our operators to test with their environments the change and make sure they are OK with it.\n\nCould you maybe explain in the goal the differences in between asyncio and some other libraries, and maybe also explain how a project could move from eventlet to asyncio ?",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": false,
"key": {
"uuid": "86970ee9_16ed22f6",
"filename": "/PATCHSET_LEVEL",
"patchSetId": 16
},
"lineNbr": 0,
"author": {
"id": 28522
},
"writtenOn": "2024-03-29T10:44:01Z",
"side": 1,
"message": "Hello Sylvain,\n\nIf you read my proposal, you already know my position concerning why I propose using Asyncio. Do not forgot that, the goal is not to move every pieces of Openstack over Asyncio. The goal is to replace the existing usages of Eventlet by Asyncio. \n\nIf you read my proposal, you already seen my position concerning alternatives like using threading, or moving to gevent, greenlet, etc... To be clear, this is a complex topic, I won\u0027t propose such alternative that, in my opinion, won\u0027t decomplexify the problem and would possibly lead to the same problem in 3 years.\n\nHowever, I\u0027m not married with my proposal. I\u0027m not married with the solution I propose. I may have miss points concerning alternatives. My sole goal is to find a solution to a critical problem we currently face on Openstack. We will still face the same problem in several months if nothing is made on Openstack.\n\nI don\u0027t think a perfect solution exists. I proposes one, that, in my opinion, looks realistic and sensible. If people think that that\u0027s not the right solution, then I invite them to propose alternatives. I\u0027ll be happy to discuss about proposed alternatives. I\u0027ll happy if we found a solution even if that\u0027s not the one I proposed. Finding a solution is my sole motivation. \n\nDo not forget that if nothing is made, the same Eventlet problem will reappear in the coming October https://devguide.python.org/versions/. Eventlet do not have the resources to remains healthy.\n\nT.C members requested a champion to propose a solution. That\u0027s what I did. My employer understand this problem, and so allow me spend time on it. My employer, for now, sponsor this topic. But, if the status quo settles, at some point I\u0027ll surely have to return to my usual affairs, leaving, against my will, Eventlet to its destiny...\n\nIf you read my proposal, you already seen I proposed some way to transition libraries and services from Eventlet and Asyncio. I proposed drafts of design based on facade pattern. I proposed examples. These examples are based on real life use cases which are successful implementation of the proposed pattern.\n\nI you read my proposal, you already seen that we have made significant steps forward concerning this topic. We revived Eventlet. We fixed support of Python 3.12 in Eventlet. We started to introduce support of Asyncio in Eventlet. And the list goes on.\n\nI understand this is a difficult choice. I understand skeptical positions. I\u0027m 100% open to discussion but I need a bit more engagement of my Openstack fellows to make things happening. Without that the snake bites his tails. Given the complexity of this topic, I can\u0027t come with a 100% detailed solution without spending months and months designing it alone. If it\u0027s to throw everything in the trash my employer won\u0027t support it. Leaving me back to my usual affairs.\n\nConcerning the performance, that\u0027s understandable and I\u0027m also interested by this kind of evaluation. Dan and Sean already expressed such kind of requests. I\u0027m in with you. But again, we need to formalize a bit more our position and our expectations. Doing such performance evaluation would require several adaption and works to make it doable. Without a bit more of implication we won\u0027t be able to reach that point.\n\nHere the question is not to love or not love Eventlet. That\u0027s not my fight. Here is not the right place to proclaim to be hater or lover of Eventlet neither. I leave haters and lovers to defend their opinions elsewhere. \n\nEventlet is broken. Eventlet is not sustainable. We need to find a solution. That\u0027s my fight.",
"parentUuid": "75f0191c_db55e591",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": false,
"key": {
"uuid": "7eae1907_3d7ce58b",
"filename": "/PATCHSET_LEVEL",
"patchSetId": 16
},
"lineNbr": 0,
"author": {
"id": 28522
},
"writtenOn": "2024-03-29T12:51:15Z",
"side": 1,
"message": "Getting engaged doesn\u0027t necessarily mean going all the way to marriage. People who commit do so with the aim of planning a common future. No one really knows what tomorrow will bring. If things go badly, they can leave him. one of them will keep the cat, and the other will keep the TV. All this between consenting adults and without earthquake. On the other hand, once the marriage is pronounced, only divorce will be able to separate them. Lawyers\u0027 turn.\n\nLet\u0027s do plan future together.",
"parentUuid": "86970ee9_16ed22f6",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "3d56f6d3_60e96f8f",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 339,
"author": {
"id": 10342
},
"writtenOn": "2024-02-09T15:31:00Z",
"side": 1,
"message": "This section + the portion below that indicates what is done/not done is confusing. Perhaps cut some of this portion? Lines 336-364 seem redundant at this point?",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "c997b866_6aa8b9ae",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 420,
"author": {
"id": 10342
},
"writtenOn": "2024-02-09T15:31:00Z",
"side": 1,
"message": "We\u0027re already at this point today, yeah? Perhaps it\u0027s worthwhile to word the \"short term\" section in complete past tense about what we have done to secure the future. Frankly, having already completed that work lends even more credence to our knowledge that eventlet is a dead-end.",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "54bb8107_aa716801",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 420,
"author": {
"id": 11975
},
"writtenOn": "2024-04-03T10:18:02Z",
"side": 1,
"message": "+1",
"parentUuid": "c997b866_6aa8b9ae",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "979db3f6_275b001a",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 4694
},
"writtenOn": "2024-03-21T23:58:13Z",
"side": 1,
"message": "Is there an example of this configuration in the context of Openstack?",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "80e82420_2b161a27",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 10342
},
"writtenOn": "2024-03-22T14:55:26Z",
"side": 1,
"message": "I think the general lack of engagement in current versions of this change has put a damper on willingness to prototype any of this. I personally will not be working on, or assigning GR-OSS resources, to this kind of prototyping until it looks like this is likely to merge.",
"parentUuid": "979db3f6_275b001a",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "de91452b_c97a4c9b",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-22T15:25:07Z",
"side": 1,
"message": "@Miguel: You can find configuration examples in the official migration guide of Eventlet https://eventlet.readthedocs.io/en/latest/migration.html#migration-guide\n\nEither operators should export `EVENTLET_HUB\u003dasyncio` in their environments, hence forcing all Eventlet based process to use the asyncio hub.\n\nAlternatively, you can explicitly specify the asyncio hub at startup, before monkey patching or any other setup work:\n\n```\nimport eventlet.hubs\neventlet.hubs.use_hub(\"eventlet.hubs.asyncio\")\n```\n\nThat\u0027s pretty straightforward.",
"parentUuid": "80e82420_2b161a27",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "462e4346_2b38f2a0",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 11604
},
"writtenOn": "2024-03-22T20:45:42Z",
"side": 1,
"message": "wait that has already been created and released?\n\ni was not expecting to see that much progres on that until next cycle.\n\ni guess we shoudl try enabling that in devstack and see what happens.",
"parentUuid": "de91452b_c97a4c9b",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "f5ccae9e_1ccfb5e4",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-25T08:18:56Z",
"side": 1,
"message": "Yes, that have been created, and released since almost 2 months.\n\nI think we can say that we already terminated the short term milestone, and partially started many tasks of the middle term milestone.",
"parentUuid": "462e4346_2b38f2a0",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "5a075ee8_1c0a81a8",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-25T09:38:38Z",
"side": 1,
"message": "@Sean: Do you want to manage that devstack enabling?\n\nI think you are well far more familiar with devstack than me, you will produce a better integration.\n\nThis would be an opportunity to have our migration guide tested by someone else other than its designers. Your feedback would be welcome.",
"parentUuid": "f5ccae9e_1ccfb5e4",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "c43cac34_8461b2a3",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 11604
},
"writtenOn": "2024-03-25T13:01:52Z",
"side": 1,
"message": "let try and chat about that at the ptg. im still trying to figure out how much upstream time ill have next cycle.\n\ni might see if i can do some kind fo poc between now and then but beyond that i cant commit to much more right now.\n\ni need to read the eventlet docs but i belive it would be possible to just modify the systemd service files generated by devstack to define EVENTLET_HUB\u003dasyncio contionally.\n\nif we followed the normal pattern we would have one global var\nGLOBAL_EVENTLET_HUB\u003depolls|asyncio|...\nwe woudl keep epolls as the default initally and over time could swap that to asyncio\neach devstack serivce should have a per service var which is actully used to generqate the systemd service file.\n\nNOVA_EVENTLET_HUB\u003d${NOVA_EVENTLET_HUB:-GLOBAL_EVENTLET_HUB}\n\nthat will enable us to opt into the asyncio hub per service and then eventually flip the global switch with the option to opt in/out.\n\nto move something like nova realistically we will need 2 implementations fo some\nfunctionality and need to detect the hub in use. the exact right way to do that(likely hiding some operations behid a fascade) is tbd but as long as we support using a hub other then asyncio we cant have any functionality that is only implemented for asyncio.",
"parentUuid": "5a075ee8_1c0a81a8",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "8f07aad1_2c03d59f",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 4393
},
"writtenOn": "2024-03-25T13:35:52Z",
"side": 1,
"message": "Perhaps I\u0027m missing something, but switching the hubs still requires monkeypatching, right? Doesn\u0027t using asyncio as a hub mean we lose the ability to wake a thread on IO event and instead have to do some polling or something? It has been a long time since I dug into those details.\n\nHowever, I think before I\u0027m on board with something like that I\u0027ll want to see a real (non-devstack-based) performance evaluation, either by one operator switching a cluster over to that, or a dedicated test. I think it would be foolish to start moving our devstacks, claim that it\u0027s okay, and then start introducing code that chains us to that future (pun intended).",
"parentUuid": "c43cac34_8461b2a3",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "e21d5cb0_7b18b6bf",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-25T14:26:14Z",
"side": 1,
"message": "@Sean: No problem, we can wait after the PTG, thanks for your PoC proposal. \n\nUnfortunately I won\u0027t be around during the PTG, so I won\u0027t be able to join the discussion. Feel free to make some linkages to your discussion in our tracking wiki https://wiki.openstack.org/wiki/Modernize_Openstack_Networking_Programming_Model\n\nAs the state of this proposal is still pending, I didn\u0027t yet created a storyboard as suggested in the community goal documentation [1]. I\u0027ll create a dedicated one, once I\u0027ll observe a significant advancement concerning the acceptance state of this proposal. For now we can continue to use the wiki, and then move to storyboard once this goal became more official.\n\n@Dan: You are right, switching the hub still requires the monkey patching. From a functional perspective, switching the hub shouldn\u0027t change things on the users side, other than allowing users to run asyncio and monkey patched code in the same process and in a combined way. Your code and the design of your deliverables would remains the same. But indeed, as you pointed, only the performances would be impacted by a hub switching.\n\nSo yes, having a real performance evaluation would be great. Do you want to manage that point?\n\nIf we decide to realize such performance evaluation, I think we have to propose repeatable methodology.\n\nI\u0027d at least suggest that such kind of performance evaluation should define which kind of Testing types we want to make/prioritize:\n- Load testing\n- Stress testing\n- Soak testing\n- Spike testing\n- Breakpoint testing\n\nIn the current use case, I think we mostly want to compare two systems to find which performs better.\n\nBut, if we also already have existing performance criteria we can also demonstrate that switching to the new hub meets performance criteria.\n\nWhich elements are you suggesting to evaluate?\n\n[1] https://governance.openstack.org/tc/goals/index.html",
"parentUuid": "8f07aad1_2c03d59f",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "abb92082_8fc522f6",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 4393
},
"writtenOn": "2024-03-25T14:36:46Z",
"side": 1,
"message": "No, I don\u0027t think I\u0027m equipped to do what I think needs to be done for a performance evaluation. I think it will require some known loads and many nodes in typical configurations, especially if/when comparable to the alternative.\n\nPerhaps we can reach out to some of our operator partners that have preprod deployments to see if they can do an evaluation for us...",
"parentUuid": "e21d5cb0_7b18b6bf",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "5aa649c6_acd2bf4a",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-25T14:51:57Z",
"side": 1,
"message": "No problem.\n\nInvolving partners is a good idea.\n\nCan I let you init that discussion with partners? I think you well expressed the performance concerns, so I think you will translate that point to them more better than me.\n\nElse, let me know and I\u0027ll see if I can reach them through the mailing list.",
"parentUuid": "abb92082_8fc522f6",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "6e713645_1776f556",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 4393
},
"writtenOn": "2024-03-25T15:10:56Z",
"side": 1,
"message": "I pinged mnaser, who sounds like he might be game for some of it at least.",
"parentUuid": "5aa649c6_acd2bf4a",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "f995b302_0a8d9a13",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-25T15:35:08Z",
"side": 1,
"message": "Thank you Dan",
"parentUuid": "6e713645_1776f556",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "fdb53f2e_2b14fd36",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 11604
},
"writtenOn": "2024-03-25T15:56:50Z",
"side": 1,
"message": "one DNM canary https://review.opendev.org/c/openstack/devstack/+/914108\n\ndependign on what happens with that ill try and respin it into something more correct",
"parentUuid": "f995b302_0a8d9a13",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "22884341_624f37e9",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-25T16:23:55Z",
"side": 1,
"message": "Awesome, thank you Sean.",
"parentUuid": "fdb53f2e_2b14fd36",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": false,
"key": {
"uuid": "3c3772b5_00ebd1e6",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 429,
"author": {
"id": 28522
},
"writtenOn": "2024-03-27T18:15:19Z",
"side": 1,
"message": "Done",
"parentUuid": "22884341_624f37e9",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
},
{
"unresolved": true,
"key": {
"uuid": "fda7b27b_eb964403",
"filename": "goals/proposed/migrate-eventlet-usages-to-asyncio.rst",
"patchSetId": 16
},
"lineNbr": 576,
"author": {
"id": 10342
},
"writtenOn": "2024-02-09T15:31:00Z",
"side": 1,
"message": "I think this is something perhaps worth removing. We (the TC) have policies around removing inactive projects already, and mentioning this here without any specific action (such as suggesting a hard-deadline or projects being marked inactive if they aren\u0027t migrated by a release).",
"revId": "bbaae17cf99a1eca1f59dc22aa9c2ddfaf3e8a3f",
"serverId": "4a232e18-c5a9-48ee-94c0-e04e7cca6543"
}
]
}