)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4d632d782ce2d9dfd0b221180271aa9f2e484db6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a981ce65_a0bc5835","updated":"2023-12-14 13:31:18.000000000","message":"I have couple of questions","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"62ffae834f8e244f1c6b6e57dcec11da02071dad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e3770797_896c88eb","updated":"2023-12-12 15:19:37.000000000","message":"im beeing pulled between losts of thigns right now so sorry i dont have time to review proeprly today\nill try and loop back tomorrow","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"282511c49aa0ad5d5aac628c557582c030804c1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"92218cfd_135c0c48","updated":"2023-12-19 16:12:05.000000000","message":"My comments has been addressed","commit_id":"34e6e746b6f6b3a9d4d35f9e2e2cfb9154e19341"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"746af502792d1ab4247aab78572cce7a677ff3a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"723d677d_95e239b2","updated":"2023-12-19 17:03:11.000000000","message":"i have two comments in line over all i think im ok with this","commit_id":"34e6e746b6f6b3a9d4d35f9e2e2cfb9154e19341"}],"specs/2024.1/approved/libvirt-mdev-live-migrate.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf9bd9ac0ba82887c28b832af92bb772b9ade352","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-mdev-live-migrate"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting with libvirt-8.5.0, kvm-7.0.0 and Linux kernel 5.14.0, guests using"},{"line_number":14,"context_line":"mediated devices can be live migrated by using a target mediated device using"},{"line_number":15,"context_line":"the same mediated device type (and we don\u0027t need to unplug/plug the mdevs)."},{"line_number":16,"context_line":"Now, we need to support this for Nova, which means that Nova should provide"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dba730a8_9f7c2d21","line":13,"range":{"start_line":13,"start_character":49,"end_line":13,"end_character":62},"updated":"2023-11-14 16:34:06.000000000","message":"kernel 5.18","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf9bd9ac0ba82887c28b832af92bb772b9ade352","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-mdev-live-migrate"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting with libvirt-8.5.0, kvm-7.0.0 and Linux kernel 5.14.0, guests using"},{"line_number":14,"context_line":"mediated devices can be live migrated by using a target mediated device using"},{"line_number":15,"context_line":"the same mediated device type (and we don\u0027t need to unplug/plug the mdevs)."},{"line_number":16,"context_line":"Now, we need to support this for Nova, which means that Nova should provide"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ad5da327_6b00ccf5","line":13,"range":{"start_line":13,"start_character":29,"end_line":13,"end_character":38},"updated":"2023-11-14 16:34:06.000000000","message":"kvm-8.1","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf9bd9ac0ba82887c28b832af92bb772b9ade352","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-mdev-live-migrate"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting with libvirt-8.5.0, kvm-7.0.0 and Linux kernel 5.14.0, guests using"},{"line_number":14,"context_line":"mediated devices can be live migrated by using a target mediated device using"},{"line_number":15,"context_line":"the same mediated device type (and we don\u0027t need to unplug/plug the mdevs)."},{"line_number":16,"context_line":"Now, we need to support this for Nova, which means that Nova should provide"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ea0082e2_a4d0af77","line":13,"range":{"start_line":13,"start_character":14,"end_line":13,"end_character":27},"updated":"2023-11-14 16:34:06.000000000","message":"libvirt-8.6.0","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"74f341ca509f5a2d12802a18f892a0de08f2f9f6","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-mdev-live-migrate"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting with libvirt-8.5.0, kvm-7.0.0 and Linux kernel 5.14.0, guests using"},{"line_number":14,"context_line":"mediated devices can be live migrated by using a target mediated device using"},{"line_number":15,"context_line":"the same mediated device type (and we don\u0027t need to unplug/plug the mdevs)."},{"line_number":16,"context_line":"Now, we need to support this for Nova, which means that Nova should provide"}],"source_content_type":"text/x-rst","patch_set":1,"id":"071c1a68_a42066aa","line":13,"range":{"start_line":13,"start_character":29,"end_line":13,"end_character":38},"in_reply_to":"ad5da327_6b00ccf5","updated":"2023-11-17 10:04:46.000000000","message":"Done","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"74f341ca509f5a2d12802a18f892a0de08f2f9f6","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-mdev-live-migrate"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting with libvirt-8.5.0, kvm-7.0.0 and Linux kernel 5.14.0, guests using"},{"line_number":14,"context_line":"mediated devices can be live migrated by using a target mediated device using"},{"line_number":15,"context_line":"the same mediated device type (and we don\u0027t need to unplug/plug the mdevs)."},{"line_number":16,"context_line":"Now, we need to support this for Nova, which means that Nova should provide"}],"source_content_type":"text/x-rst","patch_set":1,"id":"85f53463_5dcc8c03","line":13,"range":{"start_line":13,"start_character":49,"end_line":13,"end_character":62},"in_reply_to":"dba730a8_9f7c2d21","updated":"2023-11-17 10:04:46.000000000","message":"Done","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"74f341ca509f5a2d12802a18f892a0de08f2f9f6","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/libvirt-mdev-live-migrate"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Starting with libvirt-8.5.0, kvm-7.0.0 and Linux kernel 5.14.0, guests using"},{"line_number":14,"context_line":"mediated devices can be live migrated by using a target mediated device using"},{"line_number":15,"context_line":"the same mediated device type (and we don\u0027t need to unplug/plug the mdevs)."},{"line_number":16,"context_line":"Now, we need to support this for Nova, which means that Nova should provide"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5b777725_6d87230e","line":13,"range":{"start_line":13,"start_character":14,"end_line":13,"end_character":27},"in_reply_to":"ea0082e2_a4d0af77","updated":"2023-11-17 10:04:46.000000000","message":"Done","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf9bd9ac0ba82887c28b832af92bb772b9ade352","unresolved":true,"context_lines":[{"line_number":249,"context_line":"As said above, it requires :"},{"line_number":250,"context_line":"- libvirt-8.5.0 and newer"},{"line_number":251,"context_line":"- kvm-7.0.0 and newer"},{"line_number":252,"context_line":"- Linux kernel 5.14.0 and newer"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"aab91476_e340afd9","line":252,"updated":"2023-11-14 16:34:06.000000000","message":"note: those versions are not the good upstream ones, we need to change them","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"74f341ca509f5a2d12802a18f892a0de08f2f9f6","unresolved":false,"context_lines":[{"line_number":249,"context_line":"As said above, it requires :"},{"line_number":250,"context_line":"- libvirt-8.5.0 and newer"},{"line_number":251,"context_line":"- kvm-7.0.0 and newer"},{"line_number":252,"context_line":"- Linux kernel 5.14.0 and newer"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da5ad5f8_22d62a5b","line":252,"in_reply_to":"aab91476_e340afd9","updated":"2023-11-17 10:04:46.000000000","message":"Done","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf9bd9ac0ba82887c28b832af92bb772b9ade352","unresolved":true,"context_lines":[{"line_number":270,"context_line":"live-migrate and its requirements."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":".. __: https://docs.openstack.org/nova/latest/admin/virtual-gpu.html"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"References"},{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":276,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ebd0a1ad_1ec70b62","line":273,"updated":"2023-11-14 16:34:06.000000000","message":"write something about the live-migration limitations, like setting downtime and the fact you can\u0027t pause VM or auto-converge","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"74f341ca509f5a2d12802a18f892a0de08f2f9f6","unresolved":false,"context_lines":[{"line_number":270,"context_line":"live-migrate and its requirements."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":".. __: https://docs.openstack.org/nova/latest/admin/virtual-gpu.html"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"References"},{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":276,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a6a7df1f_280e7bc2","line":273,"in_reply_to":"ebd0a1ad_1ec70b62","updated":"2023-11-17 10:04:46.000000000","message":"Done","commit_id":"dc17ac82cb48d43a9152a6bcdf9e25bb872e28b9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"334e99245462249a1daecc8b7c7a3a7bf92413cc","unresolved":true,"context_lines":[{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I don\u0027t want to rebuild my instance after live-migrating if the"},{"line_number":39,"context_line":"instance was previously using a vGPU."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":42,"context_line":"different mediated device types between the source and the target host."}],"source_content_type":"text/x-rst","patch_set":3,"id":"b3f8fd77_f5884fc2","line":39,"updated":"2023-12-06 12:29:29.000000000","message":"i dont know why you have this here.\n\nthe rebuild thing we had in doc was because of a bug and it didnt require a rebuild it required a hard reboot to fix. please just remove this","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0cd12f5379174d682d6a11056d55b7f5b8106d84","unresolved":false,"context_lines":[{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I don\u0027t want to rebuild my instance after live-migrating if the"},{"line_number":39,"context_line":"instance was previously using a vGPU."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":42,"context_line":"different mediated device types between the source and the target host."}],"source_content_type":"text/x-rst","patch_set":3,"id":"802073e4_1f4c4550","line":39,"in_reply_to":"0b6ee8d3_fb82653a","updated":"2023-12-08 12:38:39.000000000","message":"Done","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e2fa358fb48fcce0e674e76f3e37e6d0c4da4d","unresolved":true,"context_lines":[{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I don\u0027t want to rebuild my instance after live-migrating if the"},{"line_number":39,"context_line":"instance was previously using a vGPU."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":42,"context_line":"different mediated device types between the source and the target host."}],"source_content_type":"text/x-rst","patch_set":3,"id":"0b6ee8d3_fb82653a","line":39,"in_reply_to":"b3f8fd77_f5884fc2","updated":"2023-12-06 16:08:22.000000000","message":"I haven\u0027t tested, but I think it was possible to live-migrate by this.\nAnyway, given it\u0027s not supported, sure I\u0027ll remove this.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"334e99245462249a1daecc8b7c7a3a7bf92413cc","unresolved":true,"context_lines":[{"line_number":39,"context_line":"instance was previously using a vGPU."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":42,"context_line":"different mediated device types between the source and the target host."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3b4c9aab_b4ae9e33","line":42,"updated":"2023-12-06 12:29:29.000000000","message":"+1","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e2fa358fb48fcce0e674e76f3e37e6d0c4da4d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"instance was previously using a vGPU."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":42,"context_line":"different mediated device types between the source and the target host."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"14c99262_e80d8421","line":42,"in_reply_to":"3b4c9aab_b4ae9e33","updated":"2023-12-06 16:08:22.000000000","message":"Acknowledged","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"334e99245462249a1daecc8b7c7a3a7bf92413cc","unresolved":true,"context_lines":[{"line_number":54,"context_line":"target mediated devices (either to be created or just kept reserved) this way :"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- we will check the minimum service versions for all computes and raise an"},{"line_number":57,"context_line":"  exception if old computes exist. See `Upgrade Impact`_ for more details."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- ``check_can_live_migrate_destination()`` will return the list of the"},{"line_number":60,"context_line":"  supported types in the ``LibvirtLiveMigrateData`` object. If also the libvirt"}],"source_content_type":"text/x-rst","patch_set":3,"id":"22165aac_56c5bcb1","line":57,"updated":"2023-12-06 12:29:29.000000000","message":"we have two options with regrads to the comptue service version check\n\neither it shold be done in the api as a min_compute_service version check for the entire cloud or in the conductor you can check the comptue service version of just the souce and dest host.\n\nbut that is the only check we should do in the conductor.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e2fa358fb48fcce0e674e76f3e37e6d0c4da4d","unresolved":true,"context_lines":[{"line_number":54,"context_line":"target mediated devices (either to be created or just kept reserved) this way :"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- we will check the minimum service versions for all computes and raise an"},{"line_number":57,"context_line":"  exception if old computes exist. See `Upgrade Impact`_ for more details."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- ``check_can_live_migrate_destination()`` will return the list of the"},{"line_number":60,"context_line":"  supported types in the ``LibvirtLiveMigrateData`` object. If also the libvirt"}],"source_content_type":"text/x-rst","patch_set":3,"id":"faf74b51_5e90443e","line":57,"in_reply_to":"22165aac_56c5bcb1","updated":"2023-12-06 16:08:22.000000000","message":"IMHO, like other pre-live-migration checks, it looks to me we should just do this by the conductor, this is simple.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0cd12f5379174d682d6a11056d55b7f5b8106d84","unresolved":false,"context_lines":[{"line_number":54,"context_line":"target mediated devices (either to be created or just kept reserved) this way :"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- we will check the minimum service versions for all computes and raise an"},{"line_number":57,"context_line":"  exception if old computes exist. See `Upgrade Impact`_ for more details."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"- ``check_can_live_migrate_destination()`` will return the list of the"},{"line_number":60,"context_line":"  supported types in the ``LibvirtLiveMigrateData`` object. If also the libvirt"}],"source_content_type":"text/x-rst","patch_set":3,"id":"a8153614_b0bbf241","line":57,"in_reply_to":"faf74b51_5e90443e","updated":"2023-12-08 12:38:39.000000000","message":"I just added more details with a link to the existing live-migration checks","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"334e99245462249a1daecc8b7c7a3a7bf92413cc","unresolved":true,"context_lines":[{"line_number":59,"context_line":"- ``check_can_live_migrate_destination()`` will return the list of the"},{"line_number":60,"context_line":"  supported types in the ``LibvirtLiveMigrateData`` object. If also the libvirt"},{"line_number":61,"context_line":"  version is below the minimum required (see `Dependencies`_), it will raise an"},{"line_number":62,"context_line":"  exception."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"- ``check_can_live_migrate_source()`` will then check whether those mdev types"},{"line_number":65,"context_line":"  are compatible with the current mediated devices of the instance and will"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2948412c_75d00114","line":62,"updated":"2023-12-06 12:29:29.000000000","message":"ah no.\n\n\n\nwe should pass the required mdev type(s) to the dest as a list of tuples  [(mdev_uuid,mdev_type),(…)] in pre_live_migrate() and the destination host should attpempt to claim that mdev by allocating an mdev of that type or confirming its free based on the allocation canidate and it should return the uuid of the mdev that was create/selected in the LibvirtLiveMigrateData object\nwe should return it as a map from souce uuid to dest uuid.\n\nwe should not be doing this in the conductor.\nplacement has already vaildatied that the host should have capsity for the requested resouce class and traits.\n\nif the operator has not correct used those to model the avlaibity of diffent mdev types already we should not add extra complexity to the conductor check an instead should delegate teh check to pre_live_migrate and to this check on the compute node.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e2fa358fb48fcce0e674e76f3e37e6d0c4da4d","unresolved":true,"context_lines":[{"line_number":59,"context_line":"- ``check_can_live_migrate_destination()`` will return the list of the"},{"line_number":60,"context_line":"  supported types in the ``LibvirtLiveMigrateData`` object. If also the libvirt"},{"line_number":61,"context_line":"  version is below the minimum required (see `Dependencies`_), it will raise an"},{"line_number":62,"context_line":"  exception."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"- ``check_can_live_migrate_source()`` will then check whether those mdev types"},{"line_number":65,"context_line":"  are compatible with the current mediated devices of the instance and will"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8c34d5ca_a9de12c0","line":62,"in_reply_to":"2948412c_75d00114","updated":"2023-12-06 16:08:22.000000000","message":"There are two points here:\n- I think we should still verify the types. Sometimes operators don\u0027t want to provide specific custom RCs for each type or traits, as for example with nvidia, types change for every GPU, meaning that operators need to modify their flavors if they upgrade their GPUS. Accordingly, I\u0027ll keep the check.\n- Now, *where* the check should happen may be an implementation question. Either we check it on the conductor or once we pre-live-migration, I\u0027m fine with both.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0cd12f5379174d682d6a11056d55b7f5b8106d84","unresolved":false,"context_lines":[{"line_number":59,"context_line":"- ``check_can_live_migrate_destination()`` will return the list of the"},{"line_number":60,"context_line":"  supported types in the ``LibvirtLiveMigrateData`` object. If also the libvirt"},{"line_number":61,"context_line":"  version is below the minimum required (see `Dependencies`_), it will raise an"},{"line_number":62,"context_line":"  exception."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"- ``check_can_live_migrate_source()`` will then check whether those mdev types"},{"line_number":65,"context_line":"  are compatible with the current mediated devices of the instance and will"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8f6b2ade_2f487025","line":62,"in_reply_to":"8c34d5ca_a9de12c0","updated":"2023-12-08 12:38:39.000000000","message":"Just amended the spec.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"334e99245462249a1daecc8b7c7a3a7bf92413cc","unresolved":true,"context_lines":[{"line_number":79,"context_line":"reserved mediated devices list from the destination host and we will update"},{"line_number":80,"context_line":"the guest XML information with those mediated device UUIDs this way :"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- in ``pre_live_migrate()`` (run on the destination node), we will get the mdev"},{"line_number":83,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":84,"context_line":"  set in the previous step and we will persist that mdev uuids in the"},{"line_number":85,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c9bc9ad9_f85de20c","line":82,"updated":"2023-12-06 12:29:29.000000000","message":"see my comment above on how i think this shold work.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e2fa358fb48fcce0e674e76f3e37e6d0c4da4d","unresolved":true,"context_lines":[{"line_number":79,"context_line":"reserved mediated devices list from the destination host and we will update"},{"line_number":80,"context_line":"the guest XML information with those mediated device UUIDs this way :"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- in ``pre_live_migrate()`` (run on the destination node), we will get the mdev"},{"line_number":83,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":84,"context_line":"  set in the previous step and we will persist that mdev uuids in the"},{"line_number":85,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"}],"source_content_type":"text/x-rst","patch_set":3,"id":"de7bb303_74cd6fd5","line":82,"in_reply_to":"c9bc9ad9_f85de20c","updated":"2023-12-06 16:08:22.000000000","message":"I\u0027ll modify the spec to explain it differently.","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0cd12f5379174d682d6a11056d55b7f5b8106d84","unresolved":false,"context_lines":[{"line_number":79,"context_line":"reserved mediated devices list from the destination host and we will update"},{"line_number":80,"context_line":"the guest XML information with those mediated device UUIDs this way :"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- in ``pre_live_migrate()`` (run on the destination node), we will get the mdev"},{"line_number":83,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":84,"context_line":"  set in the previous step and we will persist that mdev uuids in the"},{"line_number":85,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"}],"source_content_type":"text/x-rst","patch_set":3,"id":"53e4d727_783876e7","line":82,"in_reply_to":"de7bb303_74cd6fd5","updated":"2023-12-08 12:38:39.000000000","message":"Acknowledged","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"334e99245462249a1daecc8b7c7a3a7bf92413cc","unresolved":true,"context_lines":[{"line_number":93,"context_line":"- in destination\u0027s driver ``post_live_migration_at_destination()``, we delete"},{"line_number":94,"context_line":"  the mdevs tracked in the internal dictionary field of the ``LibvirtDriver``"},{"line_number":95,"context_line":"  instance thanks to the migrate data object that was keeping the list of"},{"line_number":96,"context_line":"  mediated devices claimed for the migration."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In case of any live migration abort or exception, the residue we only need to"},{"line_number":99,"context_line":"clean up is basically the list of claimed mediated devices for the migration"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e2d49d82_5b8810d7","line":96,"updated":"2023-12-06 12:29:29.000000000","message":"we proably dont want to delete them form the  in memory dict until we define the xml on the dest host. but post live migration_at_destination is valid to do that.\n\nits not that we can delete it tansk to the migrate_data_object really\nwe can delete it because the xml is not tracking that that mdev is allcoated.\nwe can optimise and use the migration_data object to know whic keys to remove without havign to read the xml if that is what you ment?","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"746af502792d1ab4247aab78572cce7a677ff3a2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"- in destination\u0027s driver ``post_live_migration_at_destination()``, we delete"},{"line_number":94,"context_line":"  the mdevs tracked in the internal dictionary field of the ``LibvirtDriver``"},{"line_number":95,"context_line":"  instance thanks to the migrate data object that was keeping the list of"},{"line_number":96,"context_line":"  mediated devices claimed for the migration."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In case of any live migration abort or exception, the residue we only need to"},{"line_number":99,"context_line":"clean up is basically the list of claimed mediated devices for the migration"}],"source_content_type":"text/x-rst","patch_set":3,"id":"90b14a6e_43095b19","line":96,"in_reply_to":"7f22bca5_66a0147e","updated":"2023-12-19 17:03:11.000000000","message":"Acknowledged","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"36943ef3f4f75f5da97588367402190c8fcccab4","unresolved":true,"context_lines":[{"line_number":93,"context_line":"- in destination\u0027s driver ``post_live_migration_at_destination()``, we delete"},{"line_number":94,"context_line":"  the mdevs tracked in the internal dictionary field of the ``LibvirtDriver``"},{"line_number":95,"context_line":"  instance thanks to the migrate data object that was keeping the list of"},{"line_number":96,"context_line":"  mediated devices claimed for the migration."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In case of any live migration abort or exception, the residue we only need to"},{"line_number":99,"context_line":"clean up is basically the list of claimed mediated devices for the migration"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7f22bca5_66a0147e","line":96,"in_reply_to":"b28087b9_873782f8","updated":"2023-12-12 15:42:48.000000000","message":"Sure, that\u0027s why I keep the value in the dict until `post_live_migration_at_destination()` as I wrote (to make sure we continue to verify it until the live-migration is done)","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"62ffae834f8e244f1c6b6e57dcec11da02071dad","unresolved":true,"context_lines":[{"line_number":93,"context_line":"- in destination\u0027s driver ``post_live_migration_at_destination()``, we delete"},{"line_number":94,"context_line":"  the mdevs tracked in the internal dictionary field of the ``LibvirtDriver``"},{"line_number":95,"context_line":"  instance thanks to the migrate data object that was keeping the list of"},{"line_number":96,"context_line":"  mediated devices claimed for the migration."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In case of any live migration abort or exception, the residue we only need to"},{"line_number":99,"context_line":"clean up is basically the list of claimed mediated devices for the migration"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b28087b9_873782f8","line":96,"in_reply_to":"d4032a66_243ce68a","updated":"2023-12-12 15:19:37.000000000","message":"so at some point, we should remove the dependency on the xml entirely.\ni really consider that a design defect in oru current mdev support.\nwith that said that does not have to be part of this spec.\n\nwe should not define the domain on the dest ourselves. we do\nthat today via the migrate_to_uri call which starts the migration in libvirt form the source and libvirt defined it for us. I don\u0027t want to introduce a race by trying to also define it form Nova on the dest.\n\nin terms of if we should keep it in the dict until the migration succeed or fails\ni think that is the simple approach yes. i dont like relying on the xml today and i woudl prefer not to add more relicance on ti that we will ahve to remove later.\n\n\nwe can use the instance uuid as a key into that dict if we make the values a list of mdev uuids\n\nif","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0cd12f5379174d682d6a11056d55b7f5b8106d84","unresolved":true,"context_lines":[{"line_number":93,"context_line":"- in destination\u0027s driver ``post_live_migration_at_destination()``, we delete"},{"line_number":94,"context_line":"  the mdevs tracked in the internal dictionary field of the ``LibvirtDriver``"},{"line_number":95,"context_line":"  instance thanks to the migrate data object that was keeping the list of"},{"line_number":96,"context_line":"  mediated devices claimed for the migration."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In case of any live migration abort or exception, the residue we only need to"},{"line_number":99,"context_line":"clean up is basically the list of claimed mediated devices for the migration"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d4032a66_243ce68a","line":96,"in_reply_to":"e2d49d82_5b8810d7","updated":"2023-12-08 12:38:39.000000000","message":"Well, since we lookup the guests\u0027 domains to know whether they have mdevs, we could get the current being-migrated guest on the destination and see it already binds some mdev (I checked with the libvirt team and they said we define the domain on the target once we start the migration). That being said, I\u0027m cautious here and I really want to keep the mdev reserved in the dict until the whole migration ends.\n\nMy point on using the migrate data was about to know *which* mdevs to remove from the temporary dict, but actually I was stupid, we should just be able to know them by the instance UUID itself that\u0027s stored in the dict as a key (which will be running when we hit post_live_mig_at_dest())","commit_id":"40f97f592024d1dda9255b1560b9d955e05a457a"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"31eec1d359c5cc2880099283dab9882164ca589b","unresolved":true,"context_lines":[{"line_number":22,"context_line":"Problem description"},{"line_number":23,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"For the moment, this is not possible to live-migrate an instance if it uses a"},{"line_number":26,"context_line":"mediated device as the target wouldn\u0027t create it. You can only for the moment"},{"line_number":27,"context_line":"cold-migrate the instance or do other move operations like shelve."},{"line_number":28,"context_line":"Fortunately, libvirt 8.5.0 now supports to live-migrate a guest by using a"},{"line_number":29,"context_line":"target mediated device uuid in the target XML so we want to directly support"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a5bb3124_9a832a01","line":26,"range":{"start_line":25,"start_character":16,"end_line":26,"end_character":48},"updated":"2023-12-14 17:59:52.000000000","message":"You mean, the target \"host\" wouldn\u0027t create the \"mdev\"?  Can you explain more (to a newbie) what are the expectations from the target host?  [Edit: okay, you explain more on the \"Proposed change\" below.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e1220a398ca0d6067edaa048aefcf3c1db025f44","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Problem description"},{"line_number":23,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"For the moment, this is not possible to live-migrate an instance if it uses a"},{"line_number":26,"context_line":"mediated device as the target wouldn\u0027t create it. You can only for the moment"},{"line_number":27,"context_line":"cold-migrate the instance or do other move operations like shelve."},{"line_number":28,"context_line":"Fortunately, libvirt 8.5.0 now supports to live-migrate a guest by using a"},{"line_number":29,"context_line":"target mediated device uuid in the target XML so we want to directly support"}],"source_content_type":"text/x-rst","patch_set":5,"id":"094ea9af_43ad2a5c","line":26,"range":{"start_line":25,"start_character":16,"end_line":26,"end_character":48},"in_reply_to":"a5bb3124_9a832a01","updated":"2023-12-15 16:33:49.000000000","message":"Acknowledged","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"31eec1d359c5cc2880099283dab9882164ca589b","unresolved":true,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an operator, I want to move my instance using a vGPU to another host without"},{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":39,"context_line":"different mediated device types between the source and the target host."}],"source_content_type":"text/x-rst","patch_set":5,"id":"8bb6d4d0_130e3f54","line":36,"range":{"start_line":35,"start_character":72,"end_line":36,"end_character":26},"updated":"2023-12-14 17:59:52.000000000","message":"Small phrasing nit: \"... without the user being aware of it\"","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e1220a398ca0d6067edaa048aefcf3c1db025f44","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an operator, I want to move my instance using a vGPU to another host without"},{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":39,"context_line":"different mediated device types between the source and the target host."}],"source_content_type":"text/x-rst","patch_set":5,"id":"38cb6f20_94cfc737","line":36,"range":{"start_line":35,"start_character":72,"end_line":36,"end_character":26},"in_reply_to":"8bb6d4d0_130e3f54","updated":"2023-12-15 16:33:49.000000000","message":"Acknowledged","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"31eec1d359c5cc2880099283dab9882164ca589b","unresolved":true,"context_lines":[{"line_number":35,"context_line":"As an operator, I want to move my instance using a vGPU to another host without"},{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":39,"context_line":"different mediated device types between the source and the target host."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5b84967b_95bcb9ca","line":39,"range":{"start_line":38,"start_character":16,"end_line":39,"end_character":70},"updated":"2023-12-14 17:59:52.000000000","message":"This sentence doesn\u0027t read clear to me.  It is telling what an Operator _doesn\u0027t_ want. Can you please rephrase this differently?","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e1220a398ca0d6067edaa048aefcf3c1db025f44","unresolved":false,"context_lines":[{"line_number":35,"context_line":"As an operator, I want to move my instance using a vGPU to another host without"},{"line_number":36,"context_line":"the user to know about it."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As an operator, I want to make sure I can\u0027t live-migrate my instance by using"},{"line_number":39,"context_line":"different mediated device types between the source and the target host."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"59ab1c25_b70768f6","line":39,"range":{"start_line":38,"start_character":16,"end_line":39,"end_character":70},"in_reply_to":"5b84967b_95bcb9ca","updated":"2023-12-15 16:33:49.000000000","message":"Acknowledged","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4d632d782ce2d9dfd0b221180271aa9f2e484db6","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  the types the target supports and will raise a ``MigrationPreCheckError`` if"},{"line_number":70,"context_line":"  not. If successful, it will pick N (N being the requested number) of the"},{"line_number":71,"context_line":"  available mediated resources (either by creating new mdevs or taking existing"},{"line_number":72,"context_line":"  ones), based on the list that was passed thru ``LibvirtLiveMigrateData``, and"},{"line_number":73,"context_line":"  will persist that list of target mediated devices in some internal dictionary"},{"line_number":74,"context_line":"  field of the ``LibvirtDriver`` instance, keyed by the instance UUID."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Later, once the source host starts the live-migration, we will obtain the"},{"line_number":77,"context_line":"reserved mediated devices list from the destination host and we will update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"40bf4ed9_b819a92f","line":74,"range":{"start_line":72,"start_character":75,"end_line":74,"end_character":70},"updated":"2023-12-14 13:31:18.000000000","message":"Is it the resource tracker\u0027s job instead?","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5bf8960fa9d572ab57eb670a455fd4615995c967","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  the types the target supports and will raise a ``MigrationPreCheckError`` if"},{"line_number":70,"context_line":"  not. If successful, it will pick N (N being the requested number) of the"},{"line_number":71,"context_line":"  available mediated resources (either by creating new mdevs or taking existing"},{"line_number":72,"context_line":"  ones), based on the list that was passed thru ``LibvirtLiveMigrateData``, and"},{"line_number":73,"context_line":"  will persist that list of target mediated devices in some internal dictionary"},{"line_number":74,"context_line":"  field of the ``LibvirtDriver`` instance, keyed by the instance UUID."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Later, once the source host starts the live-migration, we will obtain the"},{"line_number":77,"context_line":"reserved mediated devices list from the destination host and we will update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8fd9c873_dae97dde","line":74,"range":{"start_line":72,"start_character":75,"end_line":74,"end_character":70},"in_reply_to":"40bf4ed9_b819a92f","updated":"2023-12-14 13:42:11.000000000","message":"No unfortunately, all of the mdev checks are done directly by the libvirt driver, none of this is done by the RT. See below why we need to persist those mdev values and what would check this dict.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c9a6bd77be3f77f144334b18ee31b0be0cad0ab","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  the types the target supports and will raise a ``MigrationPreCheckError`` if"},{"line_number":70,"context_line":"  not. If successful, it will pick N (N being the requested number) of the"},{"line_number":71,"context_line":"  available mediated resources (either by creating new mdevs or taking existing"},{"line_number":72,"context_line":"  ones), based on the list that was passed thru ``LibvirtLiveMigrateData``, and"},{"line_number":73,"context_line":"  will persist that list of target mediated devices in some internal dictionary"},{"line_number":74,"context_line":"  field of the ``LibvirtDriver`` instance, keyed by the instance UUID."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Later, once the source host starts the live-migration, we will obtain the"},{"line_number":77,"context_line":"reserved mediated devices list from the destination host and we will update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f0af098b_adc75eeb","line":74,"range":{"start_line":72,"start_character":75,"end_line":74,"end_character":70},"in_reply_to":"8fd9c873_dae97dde","updated":"2023-12-14 15:12:34.000000000","message":"Acknowledged","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4d632d782ce2d9dfd0b221180271aa9f2e484db6","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- in ``pre_live_migrate()`` (run on the destination node), we will get the mdev"},{"line_number":81,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":82,"context_line":"  set in the previous step and we will persist those mdev uuids in the"},{"line_number":83,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"},{"line_number":84,"context_line":"  compute (we will call it later `migrate data object`)."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"- in source\u0027s driver ``_live_migration_operation()`` we lookup the migrate data"}],"source_content_type":"text/x-rst","patch_set":5,"id":"51454429_594ce87c","line":83,"range":{"start_line":82,"start_character":31,"end_line":83,"end_character":35},"updated":"2023-12-14 13:31:18.000000000","message":"can we do that already in the post_claim_migrate_data() step? That way we don\u0027t need to store that information in memory for a while.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5bf8960fa9d572ab57eb670a455fd4615995c967","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- in ``pre_live_migrate()`` (run on the destination node), we will get the mdev"},{"line_number":81,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":82,"context_line":"  set in the previous step and we will persist those mdev uuids in the"},{"line_number":83,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"},{"line_number":84,"context_line":"  compute (we will call it later `migrate data object`)."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"- in source\u0027s driver ``_live_migration_operation()`` we lookup the migrate data"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b24597ba_0717e504","line":83,"range":{"start_line":82,"start_character":31,"end_line":83,"end_character":35},"in_reply_to":"51454429_594ce87c","updated":"2023-12-14 13:42:11.000000000","message":"That\u0027s a different usage : \n- we use the migratedata object for providing mdev values between both the source and the compute, so basically the target knows about the original mdev type and then the source knows about which target mdevs to use for the live-migration.\n- we use the internal dict for persisting which mdevs are already used for live-migration for making sure that other instances being created in the target compute wouldn\u0027t take them while we live-migrate.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c9a6bd77be3f77f144334b18ee31b0be0cad0ab","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- in ``pre_live_migrate()`` (run on the destination node), we will get the mdev"},{"line_number":81,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":82,"context_line":"  set in the previous step and we will persist those mdev uuids in the"},{"line_number":83,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"},{"line_number":84,"context_line":"  compute (we will call it later `migrate data object`)."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"- in source\u0027s driver ``_live_migration_operation()`` we lookup the migrate data"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f7a4e508_47038515","line":83,"range":{"start_line":82,"start_character":31,"end_line":83,"end_character":35},"in_reply_to":"b24597ba_0717e504","updated":"2023-12-14 15:12:34.000000000","message":"\u003e we use the internal dict for persisting which mdevs are already used for live-migration for making sure that other instances being created in the target compute wouldn\u0027t take them while we live-migrate.\n\nSo we need something on the compute side as a lock between multiple instances. It sounds like the resource tracker. But I see from the discussion on IRC that it is too big change to move the mdev logic to the tracker. So an in memory dict is OK to me.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"31eec1d359c5cc2880099283dab9882164ca589b","unresolved":true,"context_lines":[{"line_number":189,"context_line":"Upgrade impact"},{"line_number":190,"context_line":"--------------"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"We don\u0027t want to let new computes trying to live migrate an instance to an"},{"line_number":193,"context_line":"older compute, right? So, we\u0027ll add a new compute service version and we\u0027ll add"},{"line_number":194,"context_line":"another condition in the conductor compatibility check method called"},{"line_number":195,"context_line":"``_check_can_migrate_specific_resources()`` for verifying if we have older"},{"line_number":196,"context_line":"computes. If so, we will return a ``MigrationPreCheckError`` exception."}],"source_content_type":"text/x-rst","patch_set":5,"id":"11794af6_5529d0a5","line":193,"range":{"start_line":192,"start_character":0,"end_line":193,"end_character":21},"updated":"2023-12-14 17:59:52.000000000","message":"Small phrasing nit: instead of asking it as a question, maybe it\u0027s better to affirmatively say what we don\u0027t want.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e1220a398ca0d6067edaa048aefcf3c1db025f44","unresolved":false,"context_lines":[{"line_number":189,"context_line":"Upgrade impact"},{"line_number":190,"context_line":"--------------"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"We don\u0027t want to let new computes trying to live migrate an instance to an"},{"line_number":193,"context_line":"older compute, right? So, we\u0027ll add a new compute service version and we\u0027ll add"},{"line_number":194,"context_line":"another condition in the conductor compatibility check method called"},{"line_number":195,"context_line":"``_check_can_migrate_specific_resources()`` for verifying if we have older"},{"line_number":196,"context_line":"computes. If so, we will return a ``MigrationPreCheckError`` exception."}],"source_content_type":"text/x-rst","patch_set":5,"id":"12cc33c2_001b3196","line":193,"range":{"start_line":192,"start_character":0,"end_line":193,"end_character":21},"in_reply_to":"11794af6_5529d0a5","updated":"2023-12-15 16:33:49.000000000","message":"Acknowledged","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4d632d782ce2d9dfd0b221180271aa9f2e484db6","unresolved":true,"context_lines":[{"line_number":195,"context_line":"``_check_can_migrate_specific_resources()`` for verifying if we have older"},{"line_number":196,"context_line":"computes. If so, we will return a ``MigrationPreCheckError`` exception."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"That said, given operators can use custom resource classes for virtual GPUs and"},{"line_number":199,"context_line":"not only the VGPU RC, we need to add a specific config option for the conductor"},{"line_number":200,"context_line":"which would tell which resource classes are used for mediated devices. By"},{"line_number":201,"context_line":"default, the value of this option would be only ``VGPU``."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"An example of this conductor-specific config option that would be in the"},{"line_number":204,"context_line":"``[devices]`` group could be::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a96785f3_ab5d3ac7","line":201,"range":{"start_line":198,"start_character":0,"end_line":201,"end_character":57},"updated":"2023-12-14 13:31:18.000000000","message":"This feels a bit weird. Nova already knows which RC to translate to an mdev. Can we somehow reuse this information in the conductor instead of asking the deployer to give us that information again?","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e1220a398ca0d6067edaa048aefcf3c1db025f44","unresolved":false,"context_lines":[{"line_number":195,"context_line":"``_check_can_migrate_specific_resources()`` for verifying if we have older"},{"line_number":196,"context_line":"computes. If so, we will return a ``MigrationPreCheckError`` exception."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"That said, given operators can use custom resource classes for virtual GPUs and"},{"line_number":199,"context_line":"not only the VGPU RC, we need to add a specific config option for the conductor"},{"line_number":200,"context_line":"which would tell which resource classes are used for mediated devices. By"},{"line_number":201,"context_line":"default, the value of this option would be only ``VGPU``."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"An example of this conductor-specific config option that would be in the"},{"line_number":204,"context_line":"``[devices]`` group could be::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7ec2c4e7_8031543a","line":201,"range":{"start_line":198,"start_character":0,"end_line":201,"end_character":57},"in_reply_to":"6130ae17_8acaa501","updated":"2023-12-15 16:33:49.000000000","message":"Acknowledged","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ebb1ed2f393da1e41d632f0f520f70d7849fff57","unresolved":true,"context_lines":[{"line_number":195,"context_line":"``_check_can_migrate_specific_resources()`` for verifying if we have older"},{"line_number":196,"context_line":"computes. If so, we will return a ``MigrationPreCheckError`` exception."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"That said, given operators can use custom resource classes for virtual GPUs and"},{"line_number":199,"context_line":"not only the VGPU RC, we need to add a specific config option for the conductor"},{"line_number":200,"context_line":"which would tell which resource classes are used for mediated devices. By"},{"line_number":201,"context_line":"default, the value of this option would be only ``VGPU``."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"An example of this conductor-specific config option that would be in the"},{"line_number":204,"context_line":"``[devices]`` group could be::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6130ae17_8acaa501","line":201,"range":{"start_line":198,"start_character":0,"end_line":201,"end_character":57},"in_reply_to":"8be6fa8b_2737ba18","updated":"2023-12-14 15:58:54.000000000","message":"\u003e We could avoid the pre-flight check that adds a conductor option and just\nassume to test the libvirt versions and the types during the pre-livemigration\nconductor checks that claim the resources.\n\nIf this means the pre-livemigration can do all the checks we need without the conductor config then I vote for letting the pre-livemigration do it.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5bf8960fa9d572ab57eb670a455fd4615995c967","unresolved":true,"context_lines":[{"line_number":195,"context_line":"``_check_can_migrate_specific_resources()`` for verifying if we have older"},{"line_number":196,"context_line":"computes. If so, we will return a ``MigrationPreCheckError`` exception."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"That said, given operators can use custom resource classes for virtual GPUs and"},{"line_number":199,"context_line":"not only the VGPU RC, we need to add a specific config option for the conductor"},{"line_number":200,"context_line":"which would tell which resource classes are used for mediated devices. By"},{"line_number":201,"context_line":"default, the value of this option would be only ``VGPU``."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"An example of this conductor-specific config option that would be in the"},{"line_number":204,"context_line":"``[devices]`` group could be::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8be6fa8b_2737ba18","line":201,"range":{"start_line":198,"start_character":0,"end_line":201,"end_character":57},"in_reply_to":"a96785f3_ab5d3ac7","updated":"2023-12-14 13:42:11.000000000","message":"Yeah, I hated writing it, hence me adding an alternative above ^\nThe problem is that the conductor doesn\u0027t know about mdev types at all, all of the configuration options are related to the compute nova.conf.\nIn order to fix this problem, we have multiple solutions : \n- either the conductor would be able to call the compute to get the mdev RCs but that means we need to create a new RPC API just for that 😞\n- or the operator configures something in the conductor. We could ask them to exactly configure the same options than the compute instead of a specific other config option, but I don\u0027t know if that really helps.\n- a 3rd possibility would be to say \"meh\" and not check about the RCs in the conductor but we would then need to know which conditional to check if this is not about looking at the flavor RCs.\n- eventually, that\u0027s why I said as an alternative, we could even not check anything in the conductor and just let the conductor to call computes inconditionally.","commit_id":"7aba16ed50111406519b9273f8965e87b85f3f98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"746af502792d1ab4247aab78572cce7a677ff3a2","unresolved":true,"context_lines":[{"line_number":79,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":80,"context_line":"  set in the previous step and we will persist those mdev uuids in the"},{"line_number":81,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"},{"line_number":82,"context_line":"  compute (we will call it later `migrate data object`)."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- in source\u0027s driver ``_live_migration_operation()`` we lookup the migrate data"},{"line_number":85,"context_line":"  object we got and we update the target guest XML in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"2a093b4d_5f3eac5f","line":82,"updated":"2023-12-19 17:03:11.000000000","message":"i dont know why this is not done in post_claim_migrate_data\ni guess im mostly ok with the curren proposal and we could disucss this again when reviewing the implementation.","commit_id":"34e6e746b6f6b3a9d4d35f9e2e2cfb9154e19341"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"43d5c5830a5bc6fadac9b219b73a876cd129a0cc","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  uuids list from the ``LibvirtDriver`` internal dictionary field that we did"},{"line_number":80,"context_line":"  set in the previous step and we will persist those mdev uuids in the"},{"line_number":81,"context_line":"  ``LibvirtLiveMigrateData`` object that we return over the wire to the source"},{"line_number":82,"context_line":"  compute (we will call it later `migrate data object`)."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- in source\u0027s driver ``_live_migration_operation()`` we lookup the migrate data"},{"line_number":85,"context_line":"  object we got and we update the target guest XML in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a7bb3d9b_ce9220dd","line":82,"in_reply_to":"2a093b4d_5f3eac5f","updated":"2023-12-19 17:35:19.000000000","message":"Good call !","commit_id":"34e6e746b6f6b3a9d4d35f9e2e2cfb9154e19341"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"746af502792d1ab4247aab78572cce7a677ff3a2","unresolved":true,"context_lines":[{"line_number":143,"context_line":"* ``source_mdev_types: fields.DictOfStringsField()`` : dictionary where the key"},{"line_number":144,"context_line":"  is a source mediated device UUID and the value is its mdev type."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* ``target_mdevs: fields.ListOfUUIDField()`` : list of the destination mediated"},{"line_number":147,"context_line":"  device UUIDs that will be used for live-migrating the instance."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"220caa3f_f21f32df","line":146,"range":{"start_line":146,"start_character":4,"end_line":146,"end_character":42},"updated":"2023-12-19 17:03:11.000000000","message":"i would prefer if this as fields.DictOfStringsField() with the key being the source mdev uuid and the dest being the dest mdev uuid.","commit_id":"34e6e746b6f6b3a9d4d35f9e2e2cfb9154e19341"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"43d5c5830a5bc6fadac9b219b73a876cd129a0cc","unresolved":false,"context_lines":[{"line_number":143,"context_line":"* ``source_mdev_types: fields.DictOfStringsField()`` : dictionary where the key"},{"line_number":144,"context_line":"  is a source mediated device UUID and the value is its mdev type."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* ``target_mdevs: fields.ListOfUUIDField()`` : list of the destination mediated"},{"line_number":147,"context_line":"  device UUIDs that will be used for live-migrating the instance."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ea3390f1_9f37cd58","line":146,"range":{"start_line":146,"start_character":4,"end_line":146,"end_character":42},"in_reply_to":"220caa3f_f21f32df","updated":"2023-12-19 17:35:19.000000000","message":"Acknowledged","commit_id":"34e6e746b6f6b3a9d4d35f9e2e2cfb9154e19341"}]}
