)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"40f9a52bbf5cbb953c76c5cb37293b0ee3b41b95","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2c4fdfe0_dbbfcab7","updated":"2024-01-23 13:29:30.000000000","message":"This looks good to me so only a little -1.\nThere could be some \"style\" improvements according to my taste.\nThe only concern I have is regarding the doc as we could miss some explanations about resources classes. (I\u0027m not sure about it).\n\nBtw, looking at the title (gpu live migration), I thought this serie would have been \"more complex\".","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"45d9cf853aa451d9414aaa1b7083f07e45612a21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c2da5def_0d9707c9","updated":"2024-01-17 23:19:28.000000000","message":"recheck lots of network timeouts probably due to the provider.","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"709b73e4d65b0bfc85edb17acf20b33bf2a0e54e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4d1996ad_425a0a9b","updated":"2024-01-29 13:28:11.000000000","message":"recheck fscking volume-related timeouts","commit_id":"ae7b5c3dc5cd0b3960570c2dddbf8398324f86d1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c4ae481ed64cad0106b91a2b05c2ab7189289c99","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e2f778cd_de08f22b","updated":"2024-02-05 17:49:53.000000000","message":"recheck post-failure","commit_id":"6fd88bc72733478736f3af8644f55fc25d6218e4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"11b5c863ce70b501fc80aa81e3fe237c870e01f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9f241fd5_8dc0529d","updated":"2024-02-15 16:53:20.000000000","message":"recheck the test failures are unrelated","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53376733af4047fed43ce5d460fb8d31c98a4078","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"d5c97211_7f1cf87d","updated":"2024-02-15 16:49:50.000000000","message":"so we chatted about about this and confirmed that this is not possible\n\nwe cannot detect this in the api so we should process with this.\n\nthere are some docs enhancment we could do but i think we shoudl work on a seperate docs enhancement patch for that and merge the funcitonal code.","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eaba368cc308f74e6a6c10b0c932284581752035","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"f2385446_068f5373","updated":"2024-02-14 12:27:49.000000000","message":"soft -1\n\nso i personaly think that the fact we did not reject live migration in the api for instances with vgpus is an existing bug.\n\nbefore we proceed with this im wondering if we should add an api block for that with a min compute service check","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f774b9343111e55ac1cb84c883593d388b0d1193","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"0846d593_a8a75a05","in_reply_to":"bb215253_c6bf7787","updated":"2024-02-15 16:51:13.000000000","message":"\u003e the problem is i dont think there is a way for use to know that an instance has a vgpu so i think that is why we dont have this check today\n\u003e \n\u003e we just use resouces: to request one \n\u003e \n\u003e so i think we cant do this but i wanted to comment to be 100% sure before we proceed with the final patch.\n\n\nYes, since we now can have custom resource classes for vGPUs only defined per compute service, this is not possible to know by the flavor if people wanna vGPUs.","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"734a4959976036079d610dcb0b959cdd261c3782","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bb215253_c6bf7787","in_reply_to":"f2385446_068f5373","updated":"2024-02-14 12:29:14.000000000","message":"the problem is i dont think there is a way for use to know that an instance has a vgpu so i think that is why we dont have this check today\n\nwe just use resouces: to request one \n\nso i think we cant do this but i wanted to comment to be 100% sure before we proceed with the final patch.","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e86a5ab144cf284ac71056b48765a81cf414fac1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"48466261_999953cf","updated":"2024-02-20 10:04:46.000000000","message":"recheck kernel guest panic on bfv resize (again)","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3e9f42fdbdf862d577f8aeb3bf4a865765dab5cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"997d6c1b_66e107f6","updated":"2024-02-19 14:37:01.000000000","message":"recheck nova-next timed out","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"62ce804e_34bc9ba4","updated":"2024-02-28 11:55:39.000000000","message":"soft -1 but since you repone this instead of adding a follow up patch please correct these issues too","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9b4829473faaecc656361454ba1230fa55efdc93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"df9ae673_2f8a8d9d","updated":"2024-02-29 02:10:26.000000000","message":"recheck timeout","commit_id":"8abc7b47fd6f938c1a376fe1a70b233d3c54f781"}],"doc/source/admin/virtual-gpu.rst":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"40f9a52bbf5cbb953c76c5cb37293b0ee3b41b95","unresolved":true,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. You also need"},{"line_number":308,"context_line":"   to make sure that your compute hosts have supported versions for libvirt,"},{"line_number":309,"context_line":"   QEMU and the kernel in order to be able to live-migrate."}],"source_content_type":"text/x-rst","patch_set":6,"id":"6f62837a_fa197bb0","line":306,"range":{"start_line":305,"start_character":40,"end_line":306,"end_character":11},"updated":"2024-01-23 13:29:30.000000000","message":"I could be wrong here, but looking quickly at the doc, it explains usage of custom traits but not custom resource classes. So that could be great to provide an example.","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e0296fbd70f966d380bd74ffb9c5b0dfeb9ae0d7","unresolved":true,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. You also need"},{"line_number":308,"context_line":"   to make sure that your compute hosts have supported versions for libvirt,"},{"line_number":309,"context_line":"   QEMU and the kernel in order to be able to live-migrate."}],"source_content_type":"text/x-rst","patch_set":6,"id":"b5dada59_b412507e","line":306,"range":{"start_line":305,"start_character":40,"end_line":306,"end_character":11},"in_reply_to":"6f62837a_fa197bb0","updated":"2024-01-25 18:25:46.000000000","message":"You\u0027re right, nothing is explained yet in https://docs.openstack.org/nova/latest/admin/virtual-gpu.html\nI can add a follow-up doc for explaining how to provide custom resource classes.","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eaba368cc308f74e6a6c10b0c932284581752035","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. You also need"},{"line_number":308,"context_line":"   to make sure that your compute hosts have supported versions for libvirt,"},{"line_number":309,"context_line":"   QEMU and the kernel in order to be able to live-migrate."}],"source_content_type":"text/x-rst","patch_set":6,"id":"841d550b_b077ee20","line":306,"range":{"start_line":305,"start_character":40,"end_line":306,"end_character":11},"in_reply_to":"b5dada59_b412507e","updated":"2024-02-14 12:27:49.000000000","message":"Acknowledged","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"966bc9c05c84376c7914738eaf7ef28cdf96c1b9","unresolved":true,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"   You can see an example of a working live-migration `here`__."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   .. __: http://sbauza.github.io/vgpu/vgpu_live_migration.html"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* Suspending a guest that has vGPUs doesn\u0027t yet work because of a libvirt"}],"source_content_type":"text/x-rst","patch_set":14,"id":"b87bed18_8e77d26c","line":323,"range":{"start_line":323,"start_character":10,"end_line":323,"end_character":63},"updated":"2024-02-14 09:04:38.000000000","message":"People can click on that link now http://sbauza.github.io/vgpu/vgpu_live_migration.html to see how things go (it\u0027s an asciinema example)","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eaba368cc308f74e6a6c10b0c932284581752035","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"   You can see an example of a working live-migration `here`__."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   .. __: http://sbauza.github.io/vgpu/vgpu_live_migration.html"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"* Suspending a guest that has vGPUs doesn\u0027t yet work because of a libvirt"}],"source_content_type":"text/x-rst","patch_set":14,"id":"09d8f8c1_f66d8bdc","line":323,"range":{"start_line":323,"start_character":10,"end_line":323,"end_character":63},"in_reply_to":"b87bed18_8e77d26c","updated":"2024-02-14 12:27:49.000000000","message":"Acknowledged","commit_id":"063a5c855aa8e5a589f979e6d3f0bd849792d6fc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"69e3e13c08075406dd6c2ead48c35fbcfbe228f9","unresolved":true,"context_lines":[{"line_number":297,"context_line":"  isn\u0027t updated with the new mediated device UUID to use for the target. Also,"},{"line_number":298,"context_line":"  mediated device live-migration wasn\u0027t supported before libvirt-8.6.0,"},{"line_number":299,"context_line":"  QEMU-8.1.0 and Linux kernel 5.18.0."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"  .. versionchanged:: 29.0.0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"}],"source_content_type":"text/x-rst","patch_set":15,"id":"cb7cc594_b49e15f5","line":300,"updated":"2024-02-27 14:47:04.000000000","message":"I\u0027m not sure why you have this paragraph because it seems to conflict with the rest of the patch and the paragraph below. Is this just here to say \"before Caracal, we didn\u0027t do this\" ?\n\nIf so, that seems ... unnecessary to me and a bit confusing to read.","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ed27ef2baef732134442145f700ff1972e74e667","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  isn\u0027t updated with the new mediated device UUID to use for the target. Also,"},{"line_number":298,"context_line":"  mediated device live-migration wasn\u0027t supported before libvirt-8.6.0,"},{"line_number":299,"context_line":"  QEMU-8.1.0 and Linux kernel 5.18.0."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"  .. versionchanged:: 29.0.0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"}],"source_content_type":"text/x-rst","patch_set":15,"id":"fdff6336_d2254fa9","line":300,"in_reply_to":"8050a175_ce9b3a00","updated":"2024-02-27 15:32:01.000000000","message":"Okay so you\u0027re trying to say \"it\u0027s supported, if the versions are right\". Makes sense, it just seems like you say \"it\u0027s not supported, but it\u0027s now supported.\"","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ebbbaf7da36aca39e1ba717a1c72fc256d85b002","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  isn\u0027t updated with the new mediated device UUID to use for the target. Also,"},{"line_number":298,"context_line":"  mediated device live-migration wasn\u0027t supported before libvirt-8.6.0,"},{"line_number":299,"context_line":"  QEMU-8.1.0 and Linux kernel 5.18.0."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"  .. versionchanged:: 29.0.0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"}],"source_content_type":"text/x-rst","patch_set":15,"id":"8050a175_ce9b3a00","line":300,"in_reply_to":"c09a4877_33a9ea40","updated":"2024-02-27 15:11:33.000000000","message":"Done","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d2bc99a1e4883d57c3a8d95047bdb20007d7b523","unresolved":true,"context_lines":[{"line_number":297,"context_line":"  isn\u0027t updated with the new mediated device UUID to use for the target. Also,"},{"line_number":298,"context_line":"  mediated device live-migration wasn\u0027t supported before libvirt-8.6.0,"},{"line_number":299,"context_line":"  QEMU-8.1.0 and Linux kernel 5.18.0."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"  .. versionchanged:: 29.0.0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_. You"}],"source_content_type":"text/x-rst","patch_set":15,"id":"c09a4877_33a9ea40","line":300,"in_reply_to":"cb7cc594_b49e15f5","updated":"2024-02-27 15:05:59.000000000","message":"The problem here is that Caracal supports some minimum QEMU and libvirt versions that are older than the above ones, so operators need to make sure that they use some OS supporting them.","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"69e3e13c08075406dd6c2ead48c35fbcfbe228f9","unresolved":true,"context_lines":[{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. You also need"},{"line_number":308,"context_line":"   to make sure that your compute hosts have supported versions for libvirt,"},{"line_number":309,"context_line":"   QEMU and the kernel in order to be able to live-migrate. Last but not the"},{"line_number":310,"context_line":"   least, if you want to live-migrate nVidia mediated devices, you need to"},{"line_number":311,"context_line":"   update :oslo.config:option:`libvirt.live_migration_downtime`,"},{"line_number":312,"context_line":"   :oslo.config:option:`libvirt.live_migration_downtime_steps` and"}],"source_content_type":"text/x-rst","patch_set":15,"id":"dde502af_47faecfa","line":309,"range":{"start_line":309,"start_character":73,"end_line":309,"end_character":76},"updated":"2024-02-27 14:47:04.000000000","message":"Its \"last but not least\" not \"last but not THE least\". Even though the latter would probably be more correcter english :)","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d2bc99a1e4883d57c3a8d95047bdb20007d7b523","unresolved":false,"context_lines":[{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. You also need"},{"line_number":308,"context_line":"   to make sure that your compute hosts have supported versions for libvirt,"},{"line_number":309,"context_line":"   QEMU and the kernel in order to be able to live-migrate. Last but not the"},{"line_number":310,"context_line":"   least, if you want to live-migrate nVidia mediated devices, you need to"},{"line_number":311,"context_line":"   update :oslo.config:option:`libvirt.live_migration_downtime`,"},{"line_number":312,"context_line":"   :oslo.config:option:`libvirt.live_migration_downtime_steps` and"}],"source_content_type":"text/x-rst","patch_set":15,"id":"c368aa05_2c725bc9","line":309,"range":{"start_line":309,"start_character":73,"end_line":309,"end_character":76},"in_reply_to":"dde502af_47faecfa","updated":"2024-02-27 15:05:59.000000000","message":"Acknowledged","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":true,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"  .. versionchanged:: 29.0.0"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_."},{"line_number":302,"context_line":"   In order to do this, both the source and target compute service need to have"},{"line_number":303,"context_line":"   minimum versions of libvirt-8.6.0, QEMU-8.1.0 and Linux kernel 5.18.0. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"}],"source_content_type":"text/x-rst","patch_set":16,"id":"b4da0029_d013cc92","line":301,"updated":"2024-02-28 11:55:39.000000000","message":"“By 2024.2 Caracal version,”\n\nThis is not gramatically correct\n\n“By the 2024.2 Caracal version,” is not incorrect but also not what a native speaker would say, it still sound clunky and not idomatic.\n\nThe correct way to say this is “As of the …” although i would also change version to release so  “As of the 2024.2 Caracal release,”\nhowver as you are not ment ot start a sentence with As in many style guides\n\nwe proably should rephase it as\n\n“In the 2024.2 Caracal release,”\n\nyour usage of By here has been annoying me every time i have seen it but since dan also dint comment i assumed we were trying not to respin the patch so i didnt ask you to but since you have…","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d8f1d5d518ac3c48363b7fb0036e4eee0f39ccdd","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"  .. versionchanged:: 29.0.0"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_."},{"line_number":302,"context_line":"   In order to do this, both the source and target compute service need to have"},{"line_number":303,"context_line":"   minimum versions of libvirt-8.6.0, QEMU-8.1.0 and Linux kernel 5.18.0. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"}],"source_content_type":"text/x-rst","patch_set":16,"id":"88da1dbc_d5b8f1f8","line":301,"in_reply_to":"b4da0029_d013cc92","updated":"2024-02-28 14:52:00.000000000","message":"Done","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":true,"context_lines":[{"line_number":301,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_."},{"line_number":302,"context_line":"   In order to do this, both the source and target compute service need to have"},{"line_number":303,"context_line":"   minimum versions of libvirt-8.6.0, QEMU-8.1.0 and Linux kernel 5.18.0. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. Last but not"}],"source_content_type":"text/x-rst","patch_set":16,"id":"0fcf70cd_f0f4a25f","line":304,"range":{"start_line":304,"start_character":30,"end_line":304,"end_character":56},"updated":"2024-02-28 11:55:39.000000000","message":"you use a single common vGPU type.\n\n\n“one same” does not read correctly “single common” is the standard way to say this.","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d8f1d5d518ac3c48363b7fb0036e4eee0f39ccdd","unresolved":false,"context_lines":[{"line_number":301,"context_line":"   By 2024.2 Caracal version, Nova now `supports vGPU live-migrations`_."},{"line_number":302,"context_line":"   In order to do this, both the source and target compute service need to have"},{"line_number":303,"context_line":"   minimum versions of libvirt-8.6.0, QEMU-8.1.0 and Linux kernel 5.18.0. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. Last but not"}],"source_content_type":"text/x-rst","patch_set":16,"id":"55b7c065_27a5c995","line":304,"range":{"start_line":304,"start_character":30,"end_line":304,"end_character":56},"in_reply_to":"0fcf70cd_f0f4a25f","updated":"2024-02-28 14:52:00.000000000","message":"Done","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":true,"context_lines":[{"line_number":302,"context_line":"   In order to do this, both the source and target compute service need to have"},{"line_number":303,"context_line":"   minimum versions of libvirt-8.6.0, QEMU-8.1.0 and Linux kernel 5.18.0. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. Last but not"},{"line_number":308,"context_line":"   least, if you want to live-migrate nVidia mediated devices, you need to"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7ddecab9_7b566b2d","line":305,"updated":"2024-02-28 11:55:39.000000000","message":"computes. Where multiple mdev types are configured on the source and destination host, custom traits or custom resource classes must be configured, reported by the host and requested by the instance to make sure that the Placement API…","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d8f1d5d518ac3c48363b7fb0036e4eee0f39ccdd","unresolved":false,"context_lines":[{"line_number":302,"context_line":"   In order to do this, both the source and target compute service need to have"},{"line_number":303,"context_line":"   minimum versions of libvirt-8.6.0, QEMU-8.1.0 and Linux kernel 5.18.0. You"},{"line_number":304,"context_line":"   need to ensure that either you use only one same vGPU type between two"},{"line_number":305,"context_line":"   computes or you use custom traits or custom resource classes for a specific"},{"line_number":306,"context_line":"   instance as we need to make sure that the Placement API correctly returns"},{"line_number":307,"context_line":"   the supported GPU using the right vGPU type for a migration. Last but not"},{"line_number":308,"context_line":"   least, if you want to live-migrate nVidia mediated devices, you need to"}],"source_content_type":"text/x-rst","patch_set":16,"id":"b14dff9c_b936143f","line":305,"in_reply_to":"7ddecab9_7b566b2d","updated":"2024-02-28 14:52:00.000000000","message":"Done","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"40f9a52bbf5cbb953c76c5cb37293b0ee3b41b95","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _update_mdev_xml(xml_doc, target_mdevs):"},{"line_number":112,"context_line":"    LOG.debug(\u0027_update_mdev_xml input xml\u003d%s\u0027,"},{"line_number":113,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":114,"context_line":"    for dev in xml_doc.findall(\u0027./devices/hostdev\u0027):"},{"line_number":115,"context_line":"        if dev.get(\u0027type\u0027) \u003d\u003d \u0027mdev\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"a5eb7e24_67ddc43d","line":112,"updated":"2024-01-23 13:29:30.000000000","message":"Usually, I like and would insert an example of the expected XML here. It avoid going back an forth to the doc.","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e0296fbd70f966d380bd74ffb9c5b0dfeb9ae0d7","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _update_mdev_xml(xml_doc, target_mdevs):"},{"line_number":112,"context_line":"    LOG.debug(\u0027_update_mdev_xml input xml\u003d%s\u0027,"},{"line_number":113,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":114,"context_line":"    for dev in xml_doc.findall(\u0027./devices/hostdev\u0027):"},{"line_number":115,"context_line":"        if dev.get(\u0027type\u0027) \u003d\u003d \u0027mdev\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"64ea3877_50cc20eb","line":112,"in_reply_to":"a5eb7e24_67ddc43d","updated":"2024-01-25 18:25:46.000000000","message":"The easiest is to lookup the XML in the test method here : https://review.opendev.org/c/openstack/nova/+/904258/6/nova/tests/unit/virt/libvirt/test_migration.py#202","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"40f9a52bbf5cbb953c76c5cb37293b0ee3b41b95","unresolved":true,"context_lines":[{"line_number":112,"context_line":"    LOG.debug(\u0027_update_mdev_xml input xml\u003d%s\u0027,"},{"line_number":113,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":114,"context_line":"    for dev in xml_doc.findall(\u0027./devices/hostdev\u0027):"},{"line_number":115,"context_line":"        if dev.get(\u0027type\u0027) \u003d\u003d \u0027mdev\u0027:"},{"line_number":116,"context_line":"            source_tag \u003d dev.find(\u0027source\u0027)"},{"line_number":117,"context_line":"            if source_tag is not None:"},{"line_number":118,"context_line":"                address_tag \u003d source_tag.find(\u0027address\u0027)"},{"line_number":119,"context_line":"                if address_tag is not None:"},{"line_number":120,"context_line":"                    src_mdev \u003d address_tag.get(\u0027uuid\u0027)"},{"line_number":121,"context_line":"                    if src_mdev is not None:"},{"line_number":122,"context_line":"                        dst_mdev \u003d target_mdevs.get(src_mdev)"},{"line_number":123,"context_line":"                        if dst_mdev is None:"},{"line_number":124,"context_line":"                            # For some reason, we don\u0027t know which mdev to use"},{"line_number":125,"context_line":"                            # so we prefer to abort the live-migration."},{"line_number":126,"context_line":"                            raise exception.NovaException("},{"line_number":127,"context_line":"                                \u0027Unable to find the destination mediated \u0027"},{"line_number":128,"context_line":"                                \u0027device UUID to use for this source mdev UUID \u0027"},{"line_number":129,"context_line":"                                \u0027: %s\u0027 % src_mdev"},{"line_number":130,"context_line":"                            )"},{"line_number":131,"context_line":"                        else:"},{"line_number":132,"context_line":"                            address_tag.set(\u0027uuid\u0027, dst_mdev)"},{"line_number":133,"context_line":"    LOG.debug(\u0027_update_mdev_xml output xml\u003d%s\u0027,"},{"line_number":134,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":135,"context_line":"    return xml_doc"}],"source_content_type":"text/x-python","patch_set":6,"id":"92566d5e_46f811c1","line":132,"range":{"start_line":115,"start_character":0,"end_line":132,"end_character":61},"updated":"2024-01-23 13:29:30.000000000","message":"This is not horrible because it is short, but I\u0027m not a nested code fan. \nSo I think I would write it: \n   \n    if dev.get(\u0027type\u0027) !\u003d \u0027mdev\u0027:\n        continue\n    source_tag \u003d dev.find(\u0027source\u0027)\n    if source_tag is None:\n        continue\n    address_tag \u003d source_tag.find(\u0027address\u0027)\n    if address_tag is None:\n        continue\n    src_mdev \u003d address_tag.get(\u0027uuid\u0027)\n    if src_mdev is None:\n        continue\n    dst_mdev \u003d target_mdevs.get(src_mdev)\n    if dst_mdev is None:\n        # For some reason, we don\u0027t know which mdev to use\n        # so we prefer to abort the live-migration.\n        raise exception.NovaException(\n        \u0027Unable to find the destination mediated \u0027\n        \u0027device UUID to use for this source mdev UUID \u0027\n        \u0027: %s\u0027 % src_mdev\n        )\n     else:\n        address_tag.set(\u0027uuid\u0027, dst_mdev)","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e0296fbd70f966d380bd74ffb9c5b0dfeb9ae0d7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    LOG.debug(\u0027_update_mdev_xml input xml\u003d%s\u0027,"},{"line_number":113,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":114,"context_line":"    for dev in xml_doc.findall(\u0027./devices/hostdev\u0027):"},{"line_number":115,"context_line":"        if dev.get(\u0027type\u0027) \u003d\u003d \u0027mdev\u0027:"},{"line_number":116,"context_line":"            source_tag \u003d dev.find(\u0027source\u0027)"},{"line_number":117,"context_line":"            if source_tag is not None:"},{"line_number":118,"context_line":"                address_tag \u003d source_tag.find(\u0027address\u0027)"},{"line_number":119,"context_line":"                if address_tag is not None:"},{"line_number":120,"context_line":"                    src_mdev \u003d address_tag.get(\u0027uuid\u0027)"},{"line_number":121,"context_line":"                    if src_mdev is not None:"},{"line_number":122,"context_line":"                        dst_mdev \u003d target_mdevs.get(src_mdev)"},{"line_number":123,"context_line":"                        if dst_mdev is None:"},{"line_number":124,"context_line":"                            # For some reason, we don\u0027t know which mdev to use"},{"line_number":125,"context_line":"                            # so we prefer to abort the live-migration."},{"line_number":126,"context_line":"                            raise exception.NovaException("},{"line_number":127,"context_line":"                                \u0027Unable to find the destination mediated \u0027"},{"line_number":128,"context_line":"                                \u0027device UUID to use for this source mdev UUID \u0027"},{"line_number":129,"context_line":"                                \u0027: %s\u0027 % src_mdev"},{"line_number":130,"context_line":"                            )"},{"line_number":131,"context_line":"                        else:"},{"line_number":132,"context_line":"                            address_tag.set(\u0027uuid\u0027, dst_mdev)"},{"line_number":133,"context_line":"    LOG.debug(\u0027_update_mdev_xml output xml\u003d%s\u0027,"},{"line_number":134,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":135,"context_line":"    return xml_doc"}],"source_content_type":"text/x-python","patch_set":6,"id":"2c679d7c_d2601c94","line":132,"range":{"start_line":115,"start_character":0,"end_line":132,"end_character":61},"in_reply_to":"92566d5e_46f811c1","updated":"2024-01-25 18:25:46.000000000","message":"Done","commit_id":"628975e713171ea5cbf9e66c8cd34a14315e299c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"69e3e13c08075406dd6c2ead48c35fbcfbe228f9","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _update_mdev_xml(xml_doc, target_mdevs):"},{"line_number":112,"context_line":"    LOG.debug(\u0027_update_mdev_xml input xml\u003d%s\u0027,"},{"line_number":113,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":114,"context_line":"    for dev in xml_doc.findall(\u0027./devices/hostdev\u0027):"},{"line_number":115,"context_line":"        if dev.get(\u0027type\u0027) \u003d\u003d \u0027mdev\u0027:"},{"line_number":116,"context_line":"            address_tag \u003d dev.find(\u0027source/address\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"60c7f4a0_688a79a6","line":113,"updated":"2024-02-27 14:47:04.000000000","message":"Is this debug still intended to be in the tree? And the one on L130? Seems pretty verbose...","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d2bc99a1e4883d57c3a8d95047bdb20007d7b523","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def _update_mdev_xml(xml_doc, target_mdevs):"},{"line_number":112,"context_line":"    LOG.debug(\u0027_update_mdev_xml input xml\u003d%s\u0027,"},{"line_number":113,"context_line":"              etree.tostring(xml_doc, encoding\u003d\u0027unicode\u0027, pretty_print\u003dTrue))"},{"line_number":114,"context_line":"    for dev in xml_doc.findall(\u0027./devices/hostdev\u0027):"},{"line_number":115,"context_line":"        if dev.get(\u0027type\u0027) \u003d\u003d \u0027mdev\u0027:"},{"line_number":116,"context_line":"            address_tag \u003d dev.find(\u0027source/address\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"0be2f80f_0f4e3727","line":113,"in_reply_to":"60c7f4a0_688a79a6","updated":"2024-02-27 15:05:59.000000000","message":"I can remove it 😊","commit_id":"937a13087b631c9ee74618046eedec296c5b189e"}],"releasenotes/notes/bp-libvirt-mdev-live-migrate-4396dbe4d9a9775f.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Instances using vGPUs can now be correctly live-migrated by the libvirt"},{"line_number":5,"context_line":"    driver between compute service supporting the same mediated device types"},{"line_number":6,"context_line":"    used by the instance. In order to be able to do this, the compute hosts"},{"line_number":7,"context_line":"    need to be supporting at least minimum versions of libvirt-8.6.0,"},{"line_number":8,"context_line":"    QEMU-8.1.0 and Linux kernel 5.18.0. If operators use multiple vGPU types"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"fa7bc9a8_ad67ff8d","line":5,"updated":"2024-02-28 11:55:39.000000000","message":"services\n\nalthouh i would say compute nodes here not services personally","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"047b98f059e3fad9b2fb035d8802fb2398681a40","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Instances using vGPUs can now be correctly live-migrated by the libvirt"},{"line_number":5,"context_line":"    driver between compute service supporting the same mediated device types"},{"line_number":6,"context_line":"    used by the instance. In order to be able to do this, the compute hosts"},{"line_number":7,"context_line":"    need to be supporting at least minimum versions of libvirt-8.6.0,"},{"line_number":8,"context_line":"    QEMU-8.1.0 and Linux kernel 5.18.0. If operators use multiple vGPU types"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"c0a701f5_1287b443","line":5,"in_reply_to":"fa7bc9a8_ad67ff8d","updated":"2024-02-28 14:53:57.000000000","message":"Done","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Instances using vGPUs can now be correctly live-migrated by the libvirt"},{"line_number":5,"context_line":"    driver between compute service supporting the same mediated device types"},{"line_number":6,"context_line":"    used by the instance. In order to be able to do this, the compute hosts"},{"line_number":7,"context_line":"    need to be supporting at least minimum versions of libvirt-8.6.0,"},{"line_number":8,"context_line":"    QEMU-8.1.0 and Linux kernel 5.18.0. If operators use multiple vGPU types"},{"line_number":9,"context_line":"    per compute, they need to make sure they already use custom traits or"},{"line_number":10,"context_line":"    custom resource classes for the GPUs resource providers and that the"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"c6a2b715_e157f295","line":7,"range":{"start_line":7,"start_character":12,"end_line":7,"end_character":25},"updated":"2024-02-28 11:55:39.000000000","message":"be supporting -\u003e support","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40c97be5874b64abcb1fd16539b4c0d3157fd3d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Instances using vGPUs can now be correctly live-migrated by the libvirt"},{"line_number":5,"context_line":"    driver between compute service supporting the same mediated device types"},{"line_number":6,"context_line":"    used by the instance. In order to be able to do this, the compute hosts"},{"line_number":7,"context_line":"    need to be supporting at least minimum versions of libvirt-8.6.0,"},{"line_number":8,"context_line":"    QEMU-8.1.0 and Linux kernel 5.18.0. If operators use multiple vGPU types"},{"line_number":9,"context_line":"    per compute, they need to make sure they already use custom traits or"},{"line_number":10,"context_line":"    custom resource classes for the GPUs resource providers and that the"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1e1be5bf_2599e84a","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":42},"updated":"2024-02-28 11:55:39.000000000","message":"least the minimum","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"047b98f059e3fad9b2fb035d8802fb2398681a40","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Instances using vGPUs can now be correctly live-migrated by the libvirt"},{"line_number":5,"context_line":"    driver between compute service supporting the same mediated device types"},{"line_number":6,"context_line":"    used by the instance. In order to be able to do this, the compute hosts"},{"line_number":7,"context_line":"    need to be supporting at least minimum versions of libvirt-8.6.0,"},{"line_number":8,"context_line":"    QEMU-8.1.0 and Linux kernel 5.18.0. If operators use multiple vGPU types"},{"line_number":9,"context_line":"    per compute, they need to make sure they already use custom traits or"},{"line_number":10,"context_line":"    custom resource classes for the GPUs resource providers and that the"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5131eda4_9698d772","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":42},"in_reply_to":"1e1be5bf_2599e84a","updated":"2024-02-28 14:53:57.000000000","message":"Done","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"047b98f059e3fad9b2fb035d8802fb2398681a40","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Instances using vGPUs can now be correctly live-migrated by the libvirt"},{"line_number":5,"context_line":"    driver between compute service supporting the same mediated device types"},{"line_number":6,"context_line":"    used by the instance. In order to be able to do this, the compute hosts"},{"line_number":7,"context_line":"    need to be supporting at least minimum versions of libvirt-8.6.0,"},{"line_number":8,"context_line":"    QEMU-8.1.0 and Linux kernel 5.18.0. If operators use multiple vGPU types"},{"line_number":9,"context_line":"    per compute, they need to make sure they already use custom traits or"},{"line_number":10,"context_line":"    custom resource classes for the GPUs resource providers and that the"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"2e222556_aca9bfe2","line":7,"range":{"start_line":7,"start_character":12,"end_line":7,"end_character":25},"in_reply_to":"c6a2b715_e157f295","updated":"2024-02-28 14:53:57.000000000","message":"Done","commit_id":"c530d3ba47fd8998e258a4e2dff2ccc00cdad1a6"}]}
