)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3eef0ae5f4e0a7a05ba979a2b960d854b33e37b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e5c0539e_59142853","updated":"2026-07-06 12:26:10.000000000","message":"in the future this might fall in the scope of the watcher project.","commit_id":"3981a09e2458a936bfff3d501b1c96c4f7f6df5b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e4fb44b8a554b807aeff0a5171eaa5500678e8d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4d13b06d_3731e40e","updated":"2026-07-06 12:24:29.000000000","message":"this is not in socpe fo nova-manage to do an if we wer eto ever do this it would need a spec","commit_id":"3981a09e2458a936bfff3d501b1c96c4f7f6df5b"},{"author":{"_account_id":39177,"name":"Bhavana","display_name":"Bhavana","email":"sortebhavna55@gmail.com","username":"Bhavana"},"change_message_id":"b5655899271ba94f8733308d09f3e4df88329f8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f6cd1faa_bee9fa26","updated":"2026-07-10 04:37:08.000000000","message":"Hi Sean, thank you for the feedback. I completely understand your point regarding the scope of nova-manage and why an optimization engine like this aligns better with the Watcher project.\n\nSince managing MIG fragmentation is a critical operational challenge for our immediate deployment, I would appreciate your guidance on whether there\u0027s an interim path to keep a basic hardware-level repartitioning trigger within Nova, or if I should immediately begin drafting an optimization spec to port this geometric solver engine over to the Watcher repository.\"","commit_id":"42f0a1c39f0ef459154c71ff30ac060303ea3c99"},{"author":{"_account_id":39177,"name":"Bhavana","display_name":"Bhavana","email":"sortebhavna55@gmail.com","username":"Bhavana"},"change_message_id":"c99e279e2a6bdd6fbbb39b3fc996fda4faf41437","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bb968a7a_bc94ffe2","updated":"2026-07-09 10:05:44.000000000","message":"plz recheck","commit_id":"42f0a1c39f0ef459154c71ff30ac060303ea3c99"},{"author":{"_account_id":39177,"name":"Bhavana","display_name":"Bhavana","email":"sortebhavna55@gmail.com","username":"Bhavana"},"change_message_id":"9dfbe4d0a2a1031d27598d932ffbfe22633e3071","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7d4b75d0_1863794f","updated":"2026-07-10 04:18:29.000000000","message":"recheck","commit_id":"42f0a1c39f0ef459154c71ff30ac060303ea3c99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a5e1dd5c1a65cfd04935a4a497c32f67a9c92be","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"497f755c_bb2d8bdc","in_reply_to":"266dafe6_f10fb3f4","updated":"2026-07-10 12:15:34.000000000","message":"by the way weighers can only influcance the host that is slected not the gpu that is selected but if we agreed that there should be an enhancement in this area we woudl extend https://github.com/openstack/nova/blob/master/nova/virt/hardware.py with some reusabel function that both the weighers and comptue agent could use\n\nand create a new weigher similar to \nhttps://github.com/openstack/nova/blob/master/nova/scheduler/weights/pci.py\n\nthe weigher would priortise host that fulfile the packing or spreading policy without droping them whihc is the main distion between the pci filter\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/pci_passthrough_filter.py\n\nfilters anwser the question \"can it boot on a given host\" weighers answer the question \"form the host that can supprot this workload which oen should we prefer\" \n\nso similar to how the numa filter use the same resuable function that the compute agent uses to select the cpu pinning and other numa constratis\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/numa_topology_filter.py\n\nif we wanted to optimise mig placement be that via the vfio-vairtiat drvier approch or vfio-mediated device approch used on older cards we take a similar approch.\n\nnova-manage is priarmly for managing db schema and data migrations wiht a small number of other low level comamnd priamrly for upgrade related changes\n\nit is not intended for managing the workloads on the cloud in general outside of upgrade related tasks like backfilling a machine type.\n\nso it is not correct to extend it with live mgiration logic.\nthat is fundemtlaly the wrong layer in the nova stack to adress this.","commit_id":"42f0a1c39f0ef459154c71ff30ac060303ea3c99"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8a5fdea7f7a1fbed9daf1fb36d2c327f0b42edaa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"266dafe6_f10fb3f4","in_reply_to":"f6cd1faa_bee9fa26","updated":"2026-07-10 12:06:32.000000000","message":"i think a draft spec wether its for nvoa or cybrog to capture the problem description and uses cases basiclly this inital part of the spec template\nhttps://github.com/openstack/nova-specs/blob/master/specs/2026.2-template.rst?plain\u003d1#L1-L91\nwoudl be a good stating point\n\nif we were to have a solution in nova for this i think the correct design choice woudl be to implement or extened a weigher to solve for this usecase\n\nfor watcher im not entirly sure we have all the information requried today to audit for this but the two woudl not be compating solution\n\nthe weigher woudl ensure that inital placemnt condier packing/srpeadign beahvior and the watcher audit woudl refien that desions and correct for outliers or other cosniderations.\n\n\n\nin nova today we do not supprot reconfiguring gpu between diffent mig or mdev types\n\nall vgpu managment is built on static confugrion so when you want to modify a mig partion you arem ent to firest disable the host drain it of workload and only once it is empty refconfiure it to advertise a diffent mig configurtion.\n\nthat is our answer to preventing fragmentation we staticly partion the cloud ahead of time and then schedule workload basedon that stabel toplogy.\n\nthe bluepint in the commit doe snot exist and the patch contains almost no information about the problem your tring to solve so that shoudl be the starting point here\n\ndescibing the probelm and usecase then we can dicuss how this shoudl be adressed and in what project based on if we agree it falls in the scope of either project.\n\n\nif you are using nova mig funcitonatliy within the constratis of what is actully supproted you should not have  MIG fragmentation as the type of mig instance is staticly preconfigured so fragmentation cant happen so this in genreally sound liek your trying to use mig in a way that is not supproted by nova or cybrog today.","commit_id":"42f0a1c39f0ef459154c71ff30ac060303ea3c99"},{"author":{"_account_id":39177,"name":"Bhavana","display_name":"Bhavana","email":"sortebhavna55@gmail.com","username":"Bhavana"},"change_message_id":"6973c47841481c520758bc7bf158c8386cf657fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0d01ef74_acf7b878","updated":"2026-07-16 04:08:42.000000000","message":"recheck","commit_id":"783d24e09d0664fc41f7d50f6517b6e657d380d2"},{"author":{"_account_id":39177,"name":"Bhavana","display_name":"Bhavana","email":"sortebhavna55@gmail.com","username":"Bhavana"},"change_message_id":"72aaddfce96001f2e3601801576e0b8bf4ff7a1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1946d7d8_02a61cff","updated":"2026-07-22 04:51:15.000000000","message":"recheck","commit_id":"783d24e09d0664fc41f7d50f6517b6e657d380d2"},{"author":{"_account_id":39177,"name":"Bhavana","display_name":"Bhavana","email":"sortebhavna55@gmail.com","username":"Bhavana"},"change_message_id":"d5c16d4e7e4fd3fdad5e51ed50a4abc688474a23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a956a9da_f1f426e1","updated":"2026-07-14 09:13:05.000000000","message":"recheck","commit_id":"783d24e09d0664fc41f7d50f6517b6e657d380d2"}],"nova/cmd/manage.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f76efbc056932f04160d17b945aae2987d50714f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"# autopep8: off"},{"line_number":24,"context_line":"# Updated import for your solver"},{"line_number":25,"context_line":"from nova.virt.libvirt.gpu_migration_tool import gpu_solver"},{"line_number":26,"context_line":"from nova import monkey_patch; monkey_patch.patch()  # noqa"},{"line_number":27,"context_line":"# autopep8: on"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"38844a25_4be96eb9","line":25,"updated":"2026-07-06 12:49:33.000000000","message":"pep8: F401 \u0027nova.virt.libvirt.gpu_migration_tool.gpu_solver\u0027 imported but unused","commit_id":"3981a09e2458a936bfff3d501b1c96c4f7f6df5b"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f76efbc056932f04160d17b945aae2987d50714f","unresolved":false,"context_lines":[{"line_number":3888,"context_line":"            \u0027vm-uuid-3333\u0027: \u0027nvidia-475\u0027,"},{"line_number":3889,"context_line":"        }"},{"line_number":3890,"context_line":""},{"line_number":3891,"context_line":"        engine \u003d solver.MIGPlacementSolver(current_allocations, target_layout)"},{"line_number":3892,"context_line":"        evacuation_list \u003d engine.solve()"},{"line_number":3893,"context_line":""},{"line_number":3894,"context_line":"        print(\"\\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"f39fdc37_25570ee7","line":3891,"updated":"2026-07-06 12:49:33.000000000","message":"pep8: F821 undefined name \u0027solver\u0027","commit_id":"3981a09e2458a936bfff3d501b1c96c4f7f6df5b"}],"nova/tests/unit/virt/libvirt/gpu_migration_tool/test_gpu_solver.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f76efbc056932f04160d17b945aae2987d50714f","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova import test"},{"line_number":17,"context_line":"# Updated import for your test file"},{"line_number":18,"context_line":"from nova.virt.libvirt.gpu_migration_tool import gpu_solver"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestMIGPlacementSolver(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"e286afa8_89c3a8bc","line":18,"updated":"2026-07-06 12:49:33.000000000","message":"pep8: F401 \u0027nova.virt.libvirt.gpu_migration_tool.gpu_solver\u0027 imported but unused","commit_id":"3981a09e2458a936bfff3d501b1c96c4f7f6df5b"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f76efbc056932f04160d17b945aae2987d50714f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        }"},{"line_number":29,"context_line":"        requested_profile \u003d [\u0027nvidia-476\u0027]"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        engine \u003d solver.MIGPlacementSolver("},{"line_number":32,"context_line":"            current_allocations, requested_profile)"},{"line_number":33,"context_line":"        evacuation_list \u003d engine.solve()"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"59f7024c_bc84804b","line":31,"updated":"2026-07-06 12:49:33.000000000","message":"pep8: F821 undefined name \u0027solver\u0027","commit_id":"3981a09e2458a936bfff3d501b1c96c4f7f6df5b"}]}
