)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Live migration with SR-IOV indirect ports."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to"},{"line_number":14,"context_line":"  allow a more predictable migration as currently live migration"},{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfd5e7cf_815a9df0","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":59},"updated":"2019-01-10 14:38:50.000000000","message":"Breaking change, I think, given that this could conceivably work currently if the exact same PCI device was available on the destination, right? If so, definitely for this but I\u0027m expecting to see a reno in about 10 minutes :)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to"},{"line_number":14,"context_line":"  allow a more predictable migration as currently live migration"},{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfd5e7cf_a144811c","line":16,"range":{"start_line":16,"start_character":2,"end_line":16,"end_character":11},"updated":"2019-01-10 14:38:50.000000000","message":"properly","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"c10f5e694bdfa0ebca682ffcc1bd1dd65fb2543f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Live migration with SR-IOV indirect ports."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to"},{"line_number":14,"context_line":"  allow a more predictable migration as currently live migration"},{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_459365a4","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":59},"in_reply_to":"bfdaf3ff_149b5bc9","updated":"2019-01-15 10:01:05.000000000","message":"\"other\" PCI device is a PCI passthrough that is not a network device.","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Live migration with SR-IOV indirect ports."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to"},{"line_number":14,"context_line":"  allow a more predictable migration as currently live migration"},{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_149b5bc9","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":59},"in_reply_to":"dfd5e7cf_815a9df0","updated":"2019-01-14 19:36:08.000000000","message":"Well, for libvirt+QEMU:\nError: libvirtError: Requested operation is not valid: domain has assigned non-USB host devices","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":24,"context_line":"  ports on the destination host."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfd5e7cf_f6da43e7","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":27},"updated":"2019-01-10 14:38:50.000000000","message":"This one I\u0027m not so sure of. What would happened beforehand? Could you expand this to provide a before-after comparison to help us assess the impact of the change? I assume like above it was pretty much broken but could pass in exceptional circumstances? If so, a reno is needed","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":24,"context_line":"  ports on the destination host."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_83f3850a","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":27},"in_reply_to":"bfdaf3ff_5491e398","updated":"2019-01-15 11:39:09.000000000","message":"+1000. Thanks for the detailed noted. Very useful. I was somewhat aware of the final case (neutron with macvtap and without extended port binding), but assumed there was more stuff functional than this. Clearly not :)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  with \"other\" PCI devices will either fail or succeed without"},{"line_number":16,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":24,"context_line":"  ports on the destination host."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_5491e398","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":27},"in_reply_to":"dfd5e7cf_f6da43e7","updated":"2019-01-14 19:36:08.000000000","message":"I will modify the commit message to reflect my findings (short version: its fully broken).\n\nTested live migration with SR-IOV ports on master with libvirt+qemu hypervisor.\n(same PCI address was available on destination node)\n\nBelow I will address the behavior for vnic_type\u003ddirect, vnic_type\u003dmacvtap when neutron supports/doesnt support extended port binding.\n\nneutron supports extended port binding:\n\nfor both vnic_type\u003ddirect and vnic_type\u003dmacvtap VM fails to live-migrate and remains in running state on source node.\n\nError: Failed to plug VIF VIFOpenVSwitch(active\u003dTrue,address\u003dfa:16:3e:60:4c:9c,bridge_name\u003d\u003c?\u003e,has_traffic_filtering\u003dTrue,id\u003d155b913b-e32e-4e6b-9ef0-7348d2772dba,n\u003e\n\nReason: nova.network.neutronv2.api.bind_ports_to_host()\ndoes not properly update binding information for the destination node.\n\n\nneutron does not support extended port binding:\n\nfor vnic_type\u003ddirect:\n\nVM fails to live-migrate and remains in running state on source node.\n\nError: libvirtError: Requested operation is not valid: domain has assigned non-USB host devices\n\nReason: exception raised during nova.virt.libvirt.driver.LibvirtDriver._live_migration_operation() \n\nfor vnic_type\u003dmacvtap:\n\n- VM boots on destination node if the same PCI slot is \n  available on destination. vm state stuck at migrating.\n- VM is still running on source node\n- Duplicate MACs on source and destination\n- PCI resources are not claimed on destination\n- may end up on a different network\n- NUMA affinity not taken care of\n\nError: PortUpdateFailed: Port update failed for port dc8d55c8-0848-4c51-b650-006bfe03853e: Unable to correlate PCI slot 0000:04:0.5 (post_live_migration_at_destination)\n\nReason: Many...\n\nBottom line i believe SR-IOV live migration is fully broken from openstack POV, i will edit the commit message and mention briefly that even if the VM manages to boot on the destination node, it will be in-operable.","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":24,"context_line":"  ports on the destination host."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Compute Changes:"},{"line_number":27,"context_line":"- Create VIFMigrateData for all VIFs in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfd5e7cf_96f3b773","line":24,"updated":"2019-01-10 14:38:50.000000000","message":"Why? (note it here)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":24,"context_line":"  ports on the destination host."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Compute Changes:"},{"line_number":27,"context_line":"- Create VIFMigrateData for all VIFs in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_748e6779","line":24,"in_reply_to":"dfd5e7cf_96f3b773","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  claimed PCI device."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- Free PCI devices on source and allocate on destination upon"},{"line_number":38,"context_line":"  a successfull migration or free claimed PCI devices on destination"},{"line_number":39,"context_line":"  upon failure."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"NeutronV2 Changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfd5e7cf_1684a7b0","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":15},"updated":"2019-01-10 14:38:50.000000000","message":"successful","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  claimed PCI device."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- Free PCI devices on source and allocate on destination upon"},{"line_number":38,"context_line":"  a successfull migration or free claimed PCI devices on destination"},{"line_number":39,"context_line":"  upon failure."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"NeutronV2 Changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_14e91b19","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":15},"in_reply_to":"dfd5e7cf_1684a7b0","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  upon failure."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"NeutronV2 Changes:"},{"line_number":42,"context_line":"- Dont update binding profile with PCI devices if migration type is"},{"line_number":43,"context_line":"  live-migration as the profile was already updated when an inactive"},{"line_number":44,"context_line":"  port binding was created during bind_ports_to_host() call"},{"line_number":45,"context_line":"  from conductor."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfd5e7cf_b6927bf5","line":42,"range":{"start_line":42,"start_character":2,"end_line":42,"end_character":6},"updated":"2019-01-10 14:38:50.000000000","message":"Don\u0027t","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  upon failure."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"NeutronV2 Changes:"},{"line_number":42,"context_line":"- Dont update binding profile with PCI devices if migration type is"},{"line_number":43,"context_line":"  live-migration as the profile was already updated when an inactive"},{"line_number":44,"context_line":"  port binding was created during bind_ports_to_host() call"},{"line_number":45,"context_line":"  from conductor."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bfdaf3ff_34ee9f22","line":42,"range":{"start_line":42,"start_character":2,"end_line":42,"end_character":6},"in_reply_to":"dfd5e7cf_b6927bf5","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"e596e6c1f786052958ecaab902f8be2d2036a844","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bfdaf3ff_0f282884","line":15,"range":{"start_line":15,"start_character":15,"end_line":15,"end_character":36},"updated":"2019-01-14 19:50:57.000000000","message":"of the resource claiming gap","commit_id":"98174a52e2965f8a58aab7c7daf3551370b096bb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"e596e6c1f786052958ecaab902f8be2d2036a844","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Live migration with SR-IOV indirect ports."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bfdaf3ff_2f7bac8c","line":16,"range":{"start_line":13,"start_character":1,"end_line":16,"end_character":31},"updated":"2019-01-14 19:50:57.000000000","message":"still need more polishing, inputs are welcome :)","commit_id":"98174a52e2965f8a58aab7c7daf3551370b096bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_03e79542","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":11},"updated":"2019-01-15 11:39:09.000000000","message":"properly","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_0163f143","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":11},"in_reply_to":"bfdaf3ff_03e79542","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_c3d2ed5c","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":17},"updated":"2019-01-15 11:39:09.000000000","message":"even with ?\n\n(I assume you\u0027re trying to say that even if we had resource claiming, we couldn\u0027t do live migration with standard PCI passthrough devices because libvirt doesn\u0027t support it?)","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_c1d169cf","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":17},"in_reply_to":"bfdaf3ff_c3d2ed5c","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":"  Prior to this check migration would have either:"},{"line_number":23,"context_line":"      - Failed with instance running on the source node."},{"line_number":24,"context_line":"      - Failed with two VMs booted on both source and destination"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_036eb594","line":21,"range":{"start_line":20,"start_character":35,"end_line":21,"end_character":27},"updated":"2019-01-15 11:39:09.000000000","message":"nit: You could drop this. The \"what\" is detailed enough, IMO","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":"  Prior to this check migration would have either:"},{"line_number":23,"context_line":"      - Failed with instance running on the source node."},{"line_number":24,"context_line":"      - Failed with two VMs booted on both source and destination"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_8104c14b","line":21,"range":{"start_line":20,"start_character":35,"end_line":21,"end_character":27},"in_reply_to":"bfdaf3ff_036eb594","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":"  Prior to this check migration would have either:"},{"line_number":23,"context_line":"      - Failed with instance running on the source node."},{"line_number":24,"context_line":"      - Failed with two VMs booted on both source and destination"},{"line_number":25,"context_line":"        nodes, VM state is set to migrating, duplicate MACs on"},{"line_number":26,"context_line":"        source and destination node and improper PCI resource claiming."},{"line_number":27,"context_line":"        This scenario is observed in the case of macVtap port type and"},{"line_number":28,"context_line":"        neutron does not support multiple port binding API extention."},{"line_number":29,"context_line":"  With very little, non user friendly information in the log."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":32,"context_line":"  ports on the destination host, this will allow proper binding against"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_83ddc543","line":29,"range":{"start_line":22,"start_character":0,"end_line":29,"end_character":61},"updated":"2019-01-15 11:39:09.000000000","message":"I\u0027d move this entire thing up to the first paragraph, where we can say why we\u0027re doing this before getting into the what/how.\n\nAlso, I do realize I\u0027m basically wordsmithing a commit message at this point but bear with me - it\u0027ll be worth it in the end, hopefully :)","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"c10f5e694bdfa0ebca682ffcc1bd1dd65fb2543f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch, builds on previous patches and enables"},{"line_number":10,"context_line":"Live migration with SR-IOV indirect ports."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Conductor Changes:"},{"line_number":13,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":14,"context_line":"  properlly claiming PCI resources on the destination node."},{"line_number":15,"context_line":"  Today, apart of resource claiming libvirt prevents live migration"},{"line_number":16,"context_line":"  with PCI passthorugh devices."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":"  Prior to this check migration would have either:"},{"line_number":23,"context_line":"      - Failed with instance running on the source node."},{"line_number":24,"context_line":"      - Failed with two VMs booted on both source and destination"},{"line_number":25,"context_line":"        nodes, VM state is set to migrating, duplicate MACs on"},{"line_number":26,"context_line":"        source and destination node and improper PCI resource claiming."},{"line_number":27,"context_line":"        This scenario is observed in the case of macVtap port type and"},{"line_number":28,"context_line":"        neutron does not support multiple port binding API extention."},{"line_number":29,"context_line":"  With very little, non user friendly information in the log."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":32,"context_line":"  ports on the destination host, this will allow proper binding against"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_05a8fd74","line":29,"range":{"start_line":12,"start_character":0,"end_line":29,"end_character":61},"updated":"2019-01-15 10:01:05.000000000","message":"will add a reno.","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":20,"context_line":"  and compute nodes are up to date with this code by checking the"},{"line_number":21,"context_line":"  computes Service version."},{"line_number":22,"context_line":"  Prior to this check migration would have either:"},{"line_number":23,"context_line":"      - Failed with instance running on the source node."},{"line_number":24,"context_line":"      - Failed with two VMs booted on both source and destination"},{"line_number":25,"context_line":"        nodes, VM state is set to migrating, duplicate MACs on"},{"line_number":26,"context_line":"        source and destination node and improper PCI resource claiming."},{"line_number":27,"context_line":"        This scenario is observed in the case of macVtap port type and"},{"line_number":28,"context_line":"        neutron does not support multiple port binding API extention."},{"line_number":29,"context_line":"  With very little, non user friendly information in the log."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- update the migrating VIF with the correct profile when binding the"},{"line_number":32,"context_line":"  ports on the destination host, this will allow proper binding against"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bfdaf3ff_61a75d51","line":29,"range":{"start_line":22,"start_character":0,"end_line":29,"end_character":61},"in_reply_to":"bfdaf3ff_83ddc543","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Conductor Changes:"},{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_da48472e","line":24,"range":{"start_line":24,"start_character":45,"end_line":24,"end_character":53},"updated":"2019-02-12 17:32:38.000000000","message":"nit: more like \"does not support\"? I don\u0027t libvirt would explicitly reject the attempt, would it?","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e835f236f9070d280af3a7da0ad58bcd0b203cdd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Conductor Changes:"},{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_00df423a","line":24,"range":{"start_line":24,"start_character":45,"end_line":24,"end_character":53},"in_reply_to":"9fdfeff1_da48472e","updated":"2019-02-12 18:37:18.000000000","message":"libvirt reject the migration for dirct mode sriov device as migration is only supported if hostdevs are of type usb.\n\nfor macvtap sriov libvirt will happily accept the migration and the neutron api code in nova will fail the migraiton in post migration when it check to see if you claimed the device.","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":28,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_bac6a399","line":25,"range":{"start_line":25,"start_character":11,"end_line":25,"end_character":22},"updated":"2019-02-12 17:32:38.000000000","message":"passthrough","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":14,"context_line":"  - Failed with two VMs booted on both source and destination"},{"line_number":15,"context_line":"    nodes, VM state is set to migrating, duplicate MACs on"},{"line_number":16,"context_line":"    source and destination node and improper PCI resource claiming."},{"line_number":17,"context_line":"    This scenario is observed in the case of macVtap port type and"},{"line_number":18,"context_line":"    neutron does not support multiple port binding API extention."},{"line_number":19,"context_line":"With very little, non user friendly information in the log."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"9fdfeff1_2d16684b","line":17,"range":{"start_line":17,"start_character":45,"end_line":17,"end_character":52},"updated":"2019-04-03 15:58:01.000000000","message":"macvtap","commit_id":"13bc491388bd1e766316afdb37827c8c9571d25b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    nodes, VM state is set to migrating, duplicate MACs on"},{"line_number":16,"context_line":"    source and destination node and improper PCI resource claiming."},{"line_number":17,"context_line":"    This scenario is observed in the case of macVtap port type and"},{"line_number":18,"context_line":"    neutron does not support multiple port binding API extention."},{"line_number":19,"context_line":"With very little, non user friendly information in the log."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Conductor Changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"9fdfeff1_ed294089","line":18,"range":{"start_line":18,"start_character":55,"end_line":18,"end_character":64},"updated":"2019-04-03 15:58:01.000000000","message":"extension","commit_id":"13bc491388bd1e766316afdb37827c8c9571d25b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":28,"context_line":"  only when neutron supports multiple ports binding API extention"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"9fdfeff1_2d2f4889","line":25,"range":{"start_line":25,"start_character":11,"end_line":25,"end_character":22},"updated":"2019-04-03 15:58:01.000000000","message":"passthrough","commit_id":"13bc491388bd1e766316afdb37827c8c9571d25b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"},{"line_number":28,"context_line":"  only when neutron supports multiple ports binding API extention"},{"line_number":29,"context_line":"  and compute nodes are up to date."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- update the migrating VIF with the correct profile when binding the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"9fdfeff1_2d442847","line":28,"range":{"start_line":28,"start_character":56,"end_line":28,"end_character":65},"updated":"2019-04-03 15:58:01.000000000","message":"extension","commit_id":"13bc491388bd1e766316afdb37827c8c9571d25b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    nodes, VM state is set to migrating, duplicate MACs on"},{"line_number":16,"context_line":"    source and destination node and improper PCI resource claiming."},{"line_number":17,"context_line":"    This scenario is observed in the case of macVtap port type and"},{"line_number":18,"context_line":"    neutron does not support multiple port binding API extention."},{"line_number":19,"context_line":"With very little, non user friendly information in the log."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Conductor Changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5fc1f717_aeac81ee","line":18,"range":{"start_line":18,"start_character":55,"end_line":18,"end_character":64},"updated":"2019-04-03 15:58:01.000000000","message":"s/extention/extension/g","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Conductor Changes:"},{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5fc1f717_3dcf5258","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":36},"updated":"2019-04-03 15:58:01.000000000","message":"I actually don\u0027t know what \"even with resource claiming\" means in this context?","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5fbf6813305e841a2ca93596af49e96708732d60","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Conductor Changes:"},{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5fc1f717_e1826500","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":36},"in_reply_to":"5fc1f717_23ecfa8d","updated":"2019-04-04 15:58:18.000000000","message":"I meant to convey that the reason for this change (limiting live migration when PCI resources are required to only VIF related PCI resources) is because libvirt does not support live migration with passthrough PCI devices.\n\nSo while its possible to claim those PCI resources, it will not be enough as libvirt will block the operation.\n\nfor direct/direct-physical ports we are unplugging/plugging the PCI (addressed by the next patch)\n\nin any case I may be over explaining so we can drop :)","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"710b35732837157d8e73f4e4fcd16c931d828184","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Conductor Changes:"},{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5fc1f717_23ecfa8d","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":36},"in_reply_to":"5fc1f717_3dcf5258","updated":"2019-04-04 11:40:53.000000000","message":"this line can actully be dropped i think.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"48dc137eff614bdc1e459888498a07f61e0f064f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Conductor Changes:"},{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  Today, even with resource claiming libvirt prevents live migration"},{"line_number":25,"context_line":"  with PCI passthorugh devices."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"5fc1f717_945873fa","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":36},"in_reply_to":"5fc1f717_e1826500","updated":"2019-04-05 09:12:38.000000000","message":"ah yes that makes sense. i will reword this.\nim going to make the change to remvoe the utils.lock funtion\nfor now as jay requested but i think it actully would be useful but should be part of a different change.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  With this change live migration with generic flavor based"},{"line_number":25,"context_line":"  PCI passthorugh devices will not be supported due to libvirt and"},{"line_number":26,"context_line":"  qemu constraint."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"5fc1f717_b1ad7885","line":25,"range":{"start_line":25,"start_character":6,"end_line":25,"end_character":17},"updated":"2019-04-05 17:35:16.000000000","message":"passthrough","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- Allow live migration only with VIF related PCI devices to allow"},{"line_number":23,"context_line":"  properly claiming PCI resources on the destination node."},{"line_number":24,"context_line":"  With this change live migration with generic flavor based"},{"line_number":25,"context_line":"  PCI passthorugh devices will not be supported due to libvirt and"},{"line_number":26,"context_line":"  qemu constraint."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- Add a check to allow live migration with VIF related PCI allocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"5fc1f717_749a906f","line":25,"range":{"start_line":25,"start_character":6,"end_line":25,"end_character":17},"in_reply_to":"5fc1f717_b1ad7885","updated":"2019-04-07 13:03:58.000000000","message":"Done","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"}],"nova/compute/manager.py":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"bd649ead637e76cb37c319ef01477144efaa23b7","unresolved":false,"context_lines":[{"line_number":8269,"context_line":"            objects.ConsoleAuthToken.\\"},{"line_number":8270,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"},{"line_number":8271,"context_line":""},{"line_number":8272,"context_line":"    def _build_migrate_vifs_claim_pci(self, ctxt, instance):"},{"line_number":8273,"context_line":"        \"\"\"create VIFs migrate data and claim VIF related PCI resources if"},{"line_number":8274,"context_line":"        needed."},{"line_number":8275,"context_line":""},{"line_number":8276,"context_line":"        \"\"\""},{"line_number":8277,"context_line":"        pci_req_id_to_mig_vif \u003d {}"},{"line_number":8278,"context_line":"        pci_req_lst \u003d []"},{"line_number":8279,"context_line":"        vif_mig_data_lst \u003d []"},{"line_number":8280,"context_line":""},{"line_number":8281,"context_line":"        for vif in instance.get_network_info():"},{"line_number":8282,"context_line":"            mig_vif \u003d migrate_data_obj.VIFMigrateData("},{"line_number":8283,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":8284,"context_line":"                vnic_type\u003dvif[\u0027vnic_type\u0027],"},{"line_number":8285,"context_line":"                vif_type\u003dvif[\u0027type\u0027],"},{"line_number":8286,"context_line":"                source_vif\u003dvif,"},{"line_number":8287,"context_line":"                profile\u003dvif[\u0027profile\u0027])"},{"line_number":8288,"context_line":"            vif_mig_data_lst.append(mig_vif)"},{"line_number":8289,"context_line":"            # find related PCI request in instance if any"},{"line_number":8290,"context_line":"            pci_req \u003d pci_request.get_instance_pci_request_from_vif(instance,"},{"line_number":8291,"context_line":"                                                                    vif)"},{"line_number":8292,"context_line":"            if pci_req:"},{"line_number":8293,"context_line":"                pci_req_id_to_mig_vif[pci_req.request_id] \u003d mig_vif"},{"line_number":8294,"context_line":"                pci_req_lst.append(pci_req)"},{"line_number":8295,"context_line":""},{"line_number":8296,"context_line":"        if len(pci_req_lst) \u003e 0:"},{"line_number":8297,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8298,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8299,"context_line":"            # source node."},{"line_number":8300,"context_line":"            vif_pci_requests \u003d instance_pci_requests_obj.InstancePCIRequests("},{"line_number":8301,"context_line":"                requests\u003dpci_req_lst,"},{"line_number":8302,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":8303,"context_line":"            pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":8304,"context_line":"            if pci_tracker:"},{"line_number":8305,"context_line":"                claimed_pci_devices_objs \u003d pci_tracker.claim_instance("},{"line_number":8306,"context_line":"                    ctxt, vif_pci_requests, None)"},{"line_number":8307,"context_line":"                # Update VIFMigrateData profile with the newly claimed PCI"},{"line_number":8308,"context_line":"                # device"},{"line_number":8309,"context_line":"                for pci_dev in claimed_pci_devices_objs:"},{"line_number":8310,"context_line":"                    LOG.debug(\"PCI device: %s Claimed on destination node\","},{"line_number":8311,"context_line":"                              pci_dev.address)"},{"line_number":8312,"context_line":"                    profile \u003d pci_req_id_to_mig_vif[pci_dev.request_id].profile"},{"line_number":8313,"context_line":"                    profile[\u0027pci_slot\u0027] \u003d pci_dev.address"},{"line_number":8314,"context_line":"                    profile[\u0027pci_vendor_info\u0027] \u003d pci_dev.vendor_id + \u0027:\u0027 + \\"},{"line_number":8315,"context_line":"                                                 pci_dev.product_id"},{"line_number":8316,"context_line":"                    pci_req_id_to_mig_vif[pci_dev.request_id].profile \u003d profile"},{"line_number":8317,"context_line":"        return vif_mig_data_lst"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_08b9627a","line":8317,"range":{"start_line":8272,"start_character":3,"end_line":8317,"end_character":31},"updated":"2018-11-27 13:47:18.000000000","message":"ill partition this into 3 phases (methods)\n\n1. create a basic VIFMigrateData per vif\n2. Claim PCI on destination for VIFs that require PCI allocation \n3. update VIFMigrateData profile attribute with the claimed PCI device address\n\nthey will be called in check_can_live_migrate_destination()","commit_id":"9b3aa4d2d04c9d17effb51ee4a9ed33889bbdb1f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":6017,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6018,"context_line":"                    instance.get_network_info())"},{"line_number":6019,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6020,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instnace_vifs(ctxt, instance)"},{"line_number":6021,"context_line":"            # Update migrate VIFs with the newly claimed PCI devices"},{"line_number":6022,"context_line":"            self._update_migrate_vifs_profile_with_pci(migrate_data.vifs,"},{"line_number":6023,"context_line":"                                                       port_id_to_pci)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_61e21904","line":6020,"range":{"start_line":6020,"start_character":49,"end_line":6020,"end_character":57},"updated":"2019-01-10 14:38:50.000000000","message":"I\u0027m guessing this isn\u0027t passing tests, unless the function is wrong (instnace vs. instance).\n\nLater: yup, typo in the function name :)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":6017,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6018,"context_line":"                    instance.get_network_info())"},{"line_number":6019,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6020,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instnace_vifs(ctxt, instance)"},{"line_number":6021,"context_line":"            # Update migrate VIFs with the newly claimed PCI devices"},{"line_number":6022,"context_line":"            self._update_migrate_vifs_profile_with_pci(migrate_data.vifs,"},{"line_number":6023,"context_line":"                                                       port_id_to_pci)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_cdab13d4","line":6020,"range":{"start_line":6020,"start_character":49,"end_line":6020,"end_character":57},"in_reply_to":"dfd5e7cf_61e21904","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":6017,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6018,"context_line":"                    instance.get_network_info())"},{"line_number":6019,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6020,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instnace_vifs(ctxt, instance)"},{"line_number":6021,"context_line":"            # Update migrate VIFs with the newly claimed PCI devices"},{"line_number":6022,"context_line":"            self._update_migrate_vifs_profile_with_pci(migrate_data.vifs,"},{"line_number":6023,"context_line":"                                                       port_id_to_pci)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_db08a629","line":6020,"range":{"start_line":6020,"start_character":49,"end_line":6020,"end_character":57},"in_reply_to":"dfd5e7cf_61e21904","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":6643,"context_line":"            # post_live_migration_at_destination() fails as it should never"},{"line_number":6644,"context_line":"            # affect cleaning up source node."},{"line_number":6645,"context_line":"            LOG.exception(\"Post live migration at destination %s failed\","},{"line_number":6646,"context_line":"                          dest, instance\u003dinstance, error\u003derror)"},{"line_number":6647,"context_line":"        do_cleanup, destroy_disks \u003d self._live_migration_cleanup_flags("},{"line_number":6648,"context_line":"                migrate_data)"},{"line_number":6649,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_c1bc25de","line":6646,"updated":"2019-01-10 14:38:50.000000000","message":"nit: unrelated change","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":6746,"context_line":"                                                                 instance)"},{"line_number":6747,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6748,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6749,"context_line":"        if pci_tracker:"},{"line_number":6750,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6751,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6752,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_190e1832","line":6749,"range":{"start_line":6749,"start_character":8,"end_line":6749,"end_character":23},"updated":"2019-01-10 14:38:50.000000000","message":"Can this ever be False? Far as I can tell, this will always be configured by \u0027nova.compute.resource_tracker.ResourceTracker._setup_pci_tracker\u0027, which is called in every code path in \u0027_init_compute_node\u0027 of that same class","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":6746,"context_line":"                                                                 instance)"},{"line_number":6747,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6748,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6749,"context_line":"        if pci_tracker:"},{"line_number":6750,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6751,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6752,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_a43793e3","line":6749,"range":{"start_line":6749,"start_character":8,"end_line":6749,"end_character":23},"in_reply_to":"bfdaf3ff_437efd19","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":6746,"context_line":"                                                                 instance)"},{"line_number":6747,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6748,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6749,"context_line":"        if pci_tracker:"},{"line_number":6750,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6751,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6752,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_437efd19","line":6749,"range":{"start_line":6749,"start_character":8,"end_line":6749,"end_character":23},"in_reply_to":"bfdaf3ff_c4e69017","updated":"2019-01-15 11:39:09.000000000","message":"Very good point. I would suspect that they\u0027re all unnecessary but, with that said, I\u0027m not sure if I want to the be the one to remove them. Maybe add a TODO to investigate later?","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":6746,"context_line":"                                                                 instance)"},{"line_number":6747,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6748,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6749,"context_line":"        if pci_tracker:"},{"line_number":6750,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6751,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6752,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_c4e69017","line":6749,"range":{"start_line":6749,"start_character":8,"end_line":6749,"end_character":23},"in_reply_to":"dfd5e7cf_190e1832","updated":"2019-01-14 19:36:08.000000000","message":"seems so, however in \u0027nova.compute.resource_tracker\u0027\nany reference to self.pci_tracker is within a conditional that tests if it is initialized.\n\ndecided to be paranoid and took the same approach (maybe some race condition?).\n\non the other hand the check may not be relevant anymore and it should be removed from nova.compute.resource_tracker as well, this can be done in a separate commit.\n\nwhat do you think ?","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":6972,"context_line":"                                                                     instance)"},{"line_number":6973,"context_line":"            # free any instance PCI claims done on destination during"},{"line_number":6974,"context_line":"            # check_can_live_migrate_destination()"},{"line_number":6975,"context_line":"            self._get_resource_tracker().pci_tracker.free_instance_claims("},{"line_number":6976,"context_line":"                context,"},{"line_number":6977,"context_line":"                instance)"},{"line_number":6978,"context_line":"            self.driver.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_b91cac6a","line":6975,"range":{"start_line":6975,"start_character":40,"end_line":6975,"end_character":52},"updated":"2019-01-10 14:38:50.000000000","message":"...and you don\u0027t have the equivalent \u0027if pci_tracker\u0027 check here","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":6972,"context_line":"                                                                     instance)"},{"line_number":6973,"context_line":"            # free any instance PCI claims done on destination during"},{"line_number":6974,"context_line":"            # check_can_live_migrate_destination()"},{"line_number":6975,"context_line":"            self._get_resource_tracker().pci_tracker.free_instance_claims("},{"line_number":6976,"context_line":"                context,"},{"line_number":6977,"context_line":"                instance)"},{"line_number":6978,"context_line":"            self.driver.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_e4ccf48a","line":6975,"range":{"start_line":6975,"start_character":40,"end_line":6975,"end_character":52},"in_reply_to":"dfd5e7cf_b91cac6a","updated":"2019-01-14 19:36:08.000000000","message":"will add the check, good catch.","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8303,"context_line":"                PCI claim on the compute node"},{"line_number":8304,"context_line":"        \"\"\""},{"line_number":8305,"context_line":"        pci_req_id_to_port_id \u003d {}"},{"line_number":8306,"context_line":"        pci_req_lst \u003d []"},{"line_number":8307,"context_line":"        port_id_to_pci_dev \u003d {}"},{"line_number":8308,"context_line":""},{"line_number":8309,"context_line":"        for vif in instance.get_network_info():"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_21c5f15b","line":8306,"range":{"start_line":8306,"start_character":8,"end_line":8306,"end_character":19},"updated":"2019-01-10 14:38:50.000000000","message":"pci_reqs?","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8303,"context_line":"                PCI claim on the compute node"},{"line_number":8304,"context_line":"        \"\"\""},{"line_number":8305,"context_line":"        pci_req_id_to_port_id \u003d {}"},{"line_number":8306,"context_line":"        pci_req_lst \u003d []"},{"line_number":8307,"context_line":"        port_id_to_pci_dev \u003d {}"},{"line_number":8308,"context_line":""},{"line_number":8309,"context_line":"        for vif in instance.get_network_info():"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_9b977e91","line":8306,"range":{"start_line":8306,"start_character":8,"end_line":8306,"end_character":19},"in_reply_to":"dfd5e7cf_21c5f15b","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8307,"context_line":"        port_id_to_pci_dev \u003d {}"},{"line_number":8308,"context_line":""},{"line_number":8309,"context_line":"        for vif in instance.get_network_info():"},{"line_number":8310,"context_line":"            pci_req \u003d pci_request.get_instance_pci_request_from_vif(ctxt,"},{"line_number":8311,"context_line":"                                                                    instance,"},{"line_number":8312,"context_line":"                                                                    vif)"},{"line_number":8313,"context_line":"            if pci_req:"},{"line_number":8314,"context_line":"                pci_req_id_to_port_id[pci_req.request_id] \u003d vif[\u0027id\u0027]"},{"line_number":8315,"context_line":"                pci_req_lst.append(pci_req)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_3922fca5","line":8312,"range":{"start_line":8310,"start_character":68,"end_line":8312,"end_character":72},"updated":"2019-01-10 14:38:50.000000000","message":"femtonit: passes pep8 but awkward to read, IMO","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8307,"context_line":"        port_id_to_pci_dev \u003d {}"},{"line_number":8308,"context_line":""},{"line_number":8309,"context_line":"        for vif in instance.get_network_info():"},{"line_number":8310,"context_line":"            pci_req \u003d pci_request.get_instance_pci_request_from_vif(ctxt,"},{"line_number":8311,"context_line":"                                                                    instance,"},{"line_number":8312,"context_line":"                                                                    vif)"},{"line_number":8313,"context_line":"            if pci_req:"},{"line_number":8314,"context_line":"                pci_req_id_to_port_id[pci_req.request_id] \u003d vif[\u0027id\u0027]"},{"line_number":8315,"context_line":"                pci_req_lst.append(pci_req)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_3b7bf28c","line":8312,"range":{"start_line":8310,"start_character":68,"end_line":8312,"end_character":72},"in_reply_to":"dfd5e7cf_3922fca5","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8314,"context_line":"                pci_req_id_to_port_id[pci_req.request_id] \u003d vif[\u0027id\u0027]"},{"line_number":8315,"context_line":"                pci_req_lst.append(pci_req)"},{"line_number":8316,"context_line":""},{"line_number":8317,"context_line":"        if len(pci_req_lst) \u003e 0:"},{"line_number":8318,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8319,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8320,"context_line":"            # source node."}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_e1a4c9bb","line":8317,"range":{"start_line":8317,"start_character":8,"end_line":8317,"end_character":32},"updated":"2019-01-10 14:38:50.000000000","message":"nit:\n\n  if pci_reqs:\n\nis fine","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":8314,"context_line":"                pci_req_id_to_port_id[pci_req.request_id] \u003d vif[\u0027id\u0027]"},{"line_number":8315,"context_line":"                pci_req_lst.append(pci_req)"},{"line_number":8316,"context_line":""},{"line_number":8317,"context_line":"        if len(pci_req_lst) \u003e 0:"},{"line_number":8318,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8319,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8320,"context_line":"            # source node."}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_04ea1f0e","line":8317,"range":{"start_line":8317,"start_character":8,"end_line":8317,"end_character":32},"in_reply_to":"bfdaf3ff_2373b94f","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":8314,"context_line":"                pci_req_id_to_port_id[pci_req.request_id] \u003d vif[\u0027id\u0027]"},{"line_number":8315,"context_line":"                pci_req_lst.append(pci_req)"},{"line_number":8316,"context_line":""},{"line_number":8317,"context_line":"        if len(pci_req_lst) \u003e 0:"},{"line_number":8318,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8319,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8320,"context_line":"            # source node."}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_2373b94f","line":8317,"range":{"start_line":8317,"start_character":8,"end_line":8317,"end_character":32},"in_reply_to":"bfdaf3ff_fb748a9b","updated":"2019-01-15 11:39:09.000000000","message":"not done (yet, anyway)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8314,"context_line":"                pci_req_id_to_port_id[pci_req.request_id] \u003d vif[\u0027id\u0027]"},{"line_number":8315,"context_line":"                pci_req_lst.append(pci_req)"},{"line_number":8316,"context_line":""},{"line_number":8317,"context_line":"        if len(pci_req_lst) \u003e 0:"},{"line_number":8318,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8319,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8320,"context_line":"            # source node."}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_fb748a9b","line":8317,"range":{"start_line":8317,"start_character":8,"end_line":8317,"end_character":32},"in_reply_to":"dfd5e7cf_e1a4c9bb","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8332,"context_line":"                              pci_dev.address)"},{"line_number":8333,"context_line":"                    port_id \u003d pci_req_id_to_port_id[pci_dev.request_id]"},{"line_number":8334,"context_line":"                    port_id_to_pci_dev[port_id] \u003d pci_dev"},{"line_number":8335,"context_line":"        return port_id_to_pci_dev"},{"line_number":8336,"context_line":""},{"line_number":8337,"context_line":"    def _update_migrate_vifs_profile_with_pci(self,"},{"line_number":8338,"context_line":"                                              migrate_vifs,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_f93b14ce","line":8335,"updated":"2019-01-10 14:38:50.000000000","message":"nit: newline before this?","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8332,"context_line":"                              pci_dev.address)"},{"line_number":8333,"context_line":"                    port_id \u003d pci_req_id_to_port_id[pci_dev.request_id]"},{"line_number":8334,"context_line":"                    port_id_to_pci_dev[port_id] \u003d pci_dev"},{"line_number":8335,"context_line":"        return port_id_to_pci_dev"},{"line_number":8336,"context_line":""},{"line_number":8337,"context_line":"    def _update_migrate_vifs_profile_with_pci(self,"},{"line_number":8338,"context_line":"                                              migrate_vifs,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_1b84ee5d","line":8335,"in_reply_to":"dfd5e7cf_f93b14ce","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8345,"context_line":"        \"\"\""},{"line_number":8346,"context_line":"        for mig_vif in migrate_vifs:"},{"line_number":8347,"context_line":"            port_id \u003d mig_vif.port_id"},{"line_number":8348,"context_line":"            if port_id in port_id_to_pci_dev.keys():"},{"line_number":8349,"context_line":"                pci_dev \u003d port_id_to_pci_dev[port_id]"},{"line_number":8350,"context_line":"                profile \u003d copy.deepcopy(mig_vif.source_vif[\u0027profile\u0027])"},{"line_number":8351,"context_line":"                profile[\u0027pci_slot\u0027] \u003d pci_dev.address"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_39575c05","line":8348,"range":{"start_line":8348,"start_character":12,"end_line":8348,"end_character":52},"updated":"2019-01-10 14:38:50.000000000","message":"nit: You can dedent this whole thing with:\n\n  if port_id not in port_id_to_pci_dev:\n      continue\n\nalso, keys() isn\u0027t necessary","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8345,"context_line":"        \"\"\""},{"line_number":8346,"context_line":"        for mig_vif in migrate_vifs:"},{"line_number":8347,"context_line":"            port_id \u003d mig_vif.port_id"},{"line_number":8348,"context_line":"            if port_id in port_id_to_pci_dev.keys():"},{"line_number":8349,"context_line":"                pci_dev \u003d port_id_to_pci_dev[port_id]"},{"line_number":8350,"context_line":"                profile \u003d copy.deepcopy(mig_vif.source_vif[\u0027profile\u0027])"},{"line_number":8351,"context_line":"                profile[\u0027pci_slot\u0027] \u003d pci_dev.address"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_db7d066f","line":8348,"range":{"start_line":8348,"start_character":12,"end_line":8348,"end_character":52},"in_reply_to":"dfd5e7cf_39575c05","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":6645,"context_line":"            # post_live_migration_at_destination() fails as it should never"},{"line_number":6646,"context_line":"            # affect cleaning up source node."},{"line_number":6647,"context_line":"            LOG.exception(\"Post live migration at destination %s failed\","},{"line_number":6648,"context_line":"                          dest, instance\u003dinstance, error\u003derror)"},{"line_number":6649,"context_line":"        do_cleanup, destroy_disks \u003d self._live_migration_cleanup_flags("},{"line_number":6650,"context_line":"                migrate_data)"},{"line_number":6651,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_a3b9e9e9","line":6648,"updated":"2019-01-15 11:39:09.000000000","message":"nit: Still got the unrelated change here","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":6645,"context_line":"            # post_live_migration_at_destination() fails as it should never"},{"line_number":6646,"context_line":"            # affect cleaning up source node."},{"line_number":6647,"context_line":"            LOG.exception(\"Post live migration at destination %s failed\","},{"line_number":6648,"context_line":"                          dest, instance\u003dinstance, error\u003derror)"},{"line_number":6649,"context_line":"        do_cleanup, destroy_disks \u003d self._live_migration_cleanup_flags("},{"line_number":6650,"context_line":"                migrate_data)"},{"line_number":6651,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_c441770d","line":6648,"in_reply_to":"bfdaf3ff_a3b9e9e9","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":6748,"context_line":"                                                                 instance)"},{"line_number":6749,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6750,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6751,"context_line":"        if pci_tracker:"},{"line_number":6752,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6753,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6754,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_63c78147","line":6751,"range":{"start_line":6751,"start_character":8,"end_line":6751,"end_character":23},"updated":"2019-01-15 11:39:09.000000000","message":"As noted at [1], maybe add a TODO to perhaps remove these logic checks in the future? I\u0027ll tinker with them myself at some point\n\n[1] https://review.openstack.org/#/c/620115/9/nova/compute/manager.py@6749","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":6748,"context_line":"                                                                 instance)"},{"line_number":6749,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6750,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6751,"context_line":"        if pci_tracker:"},{"line_number":6752,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6753,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6754,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_a446b320","line":6751,"range":{"start_line":6751,"start_character":8,"end_line":6751,"end_character":23},"in_reply_to":"bfdaf3ff_63c78147","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":6748,"context_line":"                                                                 instance)"},{"line_number":6749,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6750,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6751,"context_line":"        if pci_tracker:"},{"line_number":6752,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6753,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6754,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_c3950de6","line":6751,"range":{"start_line":6751,"start_character":8,"end_line":6751,"end_character":23},"in_reply_to":"bfdaf3ff_63c78147","updated":"2019-02-12 17:32:38.000000000","message":"Later: Actually, maybe we should blow up entirely here. I can\u0027t see any reason this _shouldn\u0027t_ be set, and if it wasn\u0027t it seems like half of these codepaths would trigger but the other half wouldn\u0027t. At a minimum, we\u0027d probably want to guard _every_ change here with a \u0027if pci_tracker:\u0027 check (like those on 6015 above, even though some of the functions they call do have this check there)","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5066a715e8431c73f6588df0b242c87da9197511","unresolved":false,"context_lines":[{"line_number":6748,"context_line":"                                                                 instance)"},{"line_number":6749,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6750,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6751,"context_line":"        if pci_tracker:"},{"line_number":6752,"context_line":"            pci_tracker.allocate_instance(instance)"},{"line_number":6753,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6754,"context_line":"            # do not rely on resource_tracker periodic job"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_81dd6a15","line":6751,"range":{"start_line":6751,"start_character":8,"end_line":6751,"end_character":23},"in_reply_to":"bfdaf3ff_c3950de6","updated":"2019-02-13 09:38:08.000000000","message":"later patches remove the pci_tracker check\nfrom what i can tell there is no code path where the PCI tracker is left un-initialized.\n\nsee my comment from Feb 10th.\n\nWell... looking at the code again, nova.compute.manager.ComputeManager.pre_start_hook() invokes the periodic task that eventually initializes the PCI tracker as it updates the available resources in the node\u0027s resource tracker.(So, if pci_tracker is not initialized then the resource_tracker isnt as well).\n\nin case the compute manager started but never got a chance to report resources, would live migration ever be triggered on this node by the conductor?\n\nplease correct me if i\u0027m missing something.\nas i believe we are in the clear with removing the pci_tracker checks altogether.","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":8357,"context_line":"            pci_dev \u003d port_id_to_pci_dev[port_id]"},{"line_number":8358,"context_line":"            profile \u003d copy.deepcopy(mig_vif.source_vif[\u0027profile\u0027])"},{"line_number":8359,"context_line":"            profile[\u0027pci_slot\u0027] \u003d pci_dev.address"},{"line_number":8360,"context_line":"            profile[\u0027pci_vendor_info\u0027] \u003d pci_dev.vendor_id + \u0027:\u0027 + \\"},{"line_number":8361,"context_line":"                                         pci_dev.product_id"},{"line_number":8362,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":8363,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""},{"line_number":8364,"context_line":"                      \"%(profile)s\", {\u0027port_id\u0027: port_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_8399456f","line":8361,"range":{"start_line":8360,"start_character":41,"end_line":8361,"end_character":59},"updated":"2019-01-15 11:39:09.000000000","message":"nit: maybe\n\n  \u0027:\u0027.join([pci_dev.vendor_id, pci_dev.product_id])","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":8357,"context_line":"            pci_dev \u003d port_id_to_pci_dev[port_id]"},{"line_number":8358,"context_line":"            profile \u003d copy.deepcopy(mig_vif.source_vif[\u0027profile\u0027])"},{"line_number":8359,"context_line":"            profile[\u0027pci_slot\u0027] \u003d pci_dev.address"},{"line_number":8360,"context_line":"            profile[\u0027pci_vendor_info\u0027] \u003d pci_dev.vendor_id + \u0027:\u0027 + \\"},{"line_number":8361,"context_line":"                                         pci_dev.product_id"},{"line_number":8362,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":8363,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""},{"line_number":8364,"context_line":"                      \"%(profile)s\", {\u0027port_id\u0027: port_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_84228f51","line":8361,"range":{"start_line":8360,"start_character":41,"end_line":8361,"end_character":59},"in_reply_to":"bfdaf3ff_8399456f","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ff2f37392e677ed6eaf2268b1dbd69fae73a15bb","unresolved":false,"context_lines":[{"line_number":6621,"context_line":"        # Free instance allocations on source before claims are allocated on"},{"line_number":6622,"context_line":"        # destination node"},{"line_number":6623,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6624,"context_line":"        # TODO(adrianc): Check if the pci_tracker is always initialized."},{"line_number":6625,"context_line":"        if pci_tracker:"},{"line_number":6626,"context_line":"            pci_tracker.free_instance_allocations("},{"line_number":6627,"context_line":"                ctxt,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_17e28604","line":6624,"range":{"start_line":6624,"start_character":7,"end_line":6624,"end_character":72},"updated":"2019-02-05 19:52:12.000000000","message":"I think it init only when you define the pci whitelist","commit_id":"e3b0fab90cd4f236aec663dbda0f2585c1775b53"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ff2f37392e677ed6eaf2268b1dbd69fae73a15bb","unresolved":false,"context_lines":[{"line_number":6643,"context_line":""},{"line_number":6644,"context_line":"        # Free instance allocations on source before claims are allocated on"},{"line_number":6645,"context_line":"        # destination node"},{"line_number":6646,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6647,"context_line":"        # TODO(adrianc): Check if the pci_tracker is always initialized."},{"line_number":6648,"context_line":"        if pci_tracker:"},{"line_number":6649,"context_line":"            pci_tracker.free_instance_allocations("}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_2babbd75","line":6646,"range":{"start_line":6646,"start_character":21,"end_line":6646,"end_character":50},"updated":"2019-02-05 19:52:12.000000000","message":"why not just self.rt.pci_tracker? (also I think that was causing the failure in the unit tests)\nit seem that in the resource tacker it always check that \nif pci_tracker: . I think we should keep this and you can remove the TODO comment","commit_id":"76cfd5925192d2bf717d67dd667fc8541398e6af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"563634e6a9509f3cf9e4a23409ac15df5e06fd2f","unresolved":false,"context_lines":[{"line_number":6643,"context_line":""},{"line_number":6644,"context_line":"        # Free instance allocations on source before claims are allocated on"},{"line_number":6645,"context_line":"        # destination node"},{"line_number":6646,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6647,"context_line":"        # TODO(adrianc): Check if the pci_tracker is always initialized."},{"line_number":6648,"context_line":"        if pci_tracker:"},{"line_number":6649,"context_line":"            pci_tracker.free_instance_allocations("}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_71dbf47c","line":6646,"range":{"start_line":6646,"start_character":21,"end_line":6646,"end_character":50},"in_reply_to":"9fdfeff1_112ce897","updated":"2019-02-05 21:10:08.000000000","message":"the unit test failure are becasue of \nhttps://github.com/openstack/nova/commit/eb5bdd33052166e4375f924456438f11be03310a\ni fixed the merge conflict on the base patch in the seriese earlire today.\n\nthe changer did not create a merge conflict on the later patches but it did remove _get_resouce_tracker\n\nand introduce  self.rt\n\nadrian was not using  self.rt.pci_tracker instead of self.get_resouce_tracker.pci_tracker as it did not exist when they worte this patch.","commit_id":"76cfd5925192d2bf717d67dd667fc8541398e6af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b0432ba9266ae720f854300f14f75428164a7d04","unresolved":false,"context_lines":[{"line_number":6643,"context_line":""},{"line_number":6644,"context_line":"        # Free instance allocations on source before claims are allocated on"},{"line_number":6645,"context_line":"        # destination node"},{"line_number":6646,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6647,"context_line":"        # TODO(adrianc): Check if the pci_tracker is always initialized."},{"line_number":6648,"context_line":"        if pci_tracker:"},{"line_number":6649,"context_line":"            pci_tracker.free_instance_allocations("}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_112ce897","line":6646,"range":{"start_line":6646,"start_character":21,"end_line":6646,"end_character":50},"in_reply_to":"9fdfeff1_2babbd75","updated":"2019-02-05 21:04:50.000000000","message":"im rather disturbed that we dont always create the pci tracker and need to test in the first place. this is out of scope but that adds complixity to consumer of the resouce tracker and it seam like it an over optimisation.\n\ni can reasonably see disabling the periodic task that scanns for pci devices if the whitelist is empty but there is no good reason to not initalise the manager.\n\nanyway that out of scope of this change.\n\nself.rt.pci_tracker makes sense.","commit_id":"76cfd5925192d2bf717d67dd667fc8541398e6af"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"4ebaab7f8397293e75fa2a4bc8eb98c6692dca6b","unresolved":false,"context_lines":[{"line_number":6643,"context_line":""},{"line_number":6644,"context_line":"        # Free instance allocations on source before claims are allocated on"},{"line_number":6645,"context_line":"        # destination node"},{"line_number":6646,"context_line":"        pci_tracker \u003d self._get_resource_tracker().pci_tracker"},{"line_number":6647,"context_line":"        # TODO(adrianc): Check if the pci_tracker is always initialized."},{"line_number":6648,"context_line":"        if pci_tracker:"},{"line_number":6649,"context_line":"            pci_tracker.free_instance_allocations("}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_e0e90780","line":6646,"range":{"start_line":6646,"start_character":21,"end_line":6646,"end_character":50},"in_reply_to":"9fdfeff1_71dbf47c","updated":"2019-02-10 17:40:24.000000000","message":"now that resource tracker is always available it seems that pci_tracker is always initialized in:\nnova.compute.manager.ComputeManager.pre_start_hook()\n\nby explicitly calling:\nnova.compute.manager.ComputeManager.update_available_resource()\n\nhttps://github.com/openstack/nova/blob/bff3fd1cdbc441bf8d0bbe91099c2b2c57578b31/nova/compute/manager.py#L1259\n\n\nso id say we are in the clear with removing the pci_tracker check.\n\nThanks for re-spinning Sean.","commit_id":"76cfd5925192d2bf717d67dd667fc8541398e6af"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":6766,"context_line":"        self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6767,"context_line":"        # Note(adrianc): Update DB with new allocations."},{"line_number":6768,"context_line":"        # do not rely on resource_tracker periodic job"},{"line_number":6769,"context_line":"        # TODO(adrianc): do we need to protect save operation with"},{"line_number":6770,"context_line":"        # COMPUTE_RESOURCE_SEMAPHORE ?"},{"line_number":6771,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6772,"context_line":""},{"line_number":6773,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_5aa777be","line":6770,"range":{"start_line":6769,"start_character":0,"end_line":6770,"end_character":38},"updated":"2019-02-12 17:32:38.000000000","message":"I have no idea","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e835f236f9070d280af3a7da0ad58bcd0b203cdd","unresolved":false,"context_lines":[{"line_number":6766,"context_line":"        self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6767,"context_line":"        # Note(adrianc): Update DB with new allocations."},{"line_number":6768,"context_line":"        # do not rely on resource_tracker periodic job"},{"line_number":6769,"context_line":"        # TODO(adrianc): do we need to protect save operation with"},{"line_number":6770,"context_line":"        # COMPUTE_RESOURCE_SEMAPHORE ?"},{"line_number":6771,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6772,"context_line":""},{"line_number":6773,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_c0cdba85","line":6770,"range":{"start_line":6769,"start_character":0,"end_line":6770,"end_character":38},"in_reply_to":"9fdfeff1_5aa777be","updated":"2019-02-12 18:37:18.000000000","message":"good question if we do both the allocate and save would need to be wrapped in it.","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5066a715e8431c73f6588df0b242c87da9197511","unresolved":false,"context_lines":[{"line_number":6766,"context_line":"        self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6767,"context_line":"        # Note(adrianc): Update DB with new allocations."},{"line_number":6768,"context_line":"        # do not rely on resource_tracker periodic job"},{"line_number":6769,"context_line":"        # TODO(adrianc): do we need to protect save operation with"},{"line_number":6770,"context_line":"        # COMPUTE_RESOURCE_SEMAPHORE ?"},{"line_number":6771,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6772,"context_line":""},{"line_number":6773,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_c4a86079","line":6770,"range":{"start_line":6769,"start_character":0,"end_line":6770,"end_character":38},"in_reply_to":"9fdfeff1_c0cdba85","updated":"2019-02-13 09:38:08.000000000","message":"We need to, when claiming/freeing PCI resources this is done by the resource tracker.\n\nwhen moving from claimed to allocated we can get by without it.","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"from nova.objects import base as obj_base"},{"line_number":85,"context_line":"from nova.objects import fields"},{"line_number":86,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":87,"context_line":"from nova.objects import instance_pci_requests as instance_pci_requests_obj"},{"line_number":88,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":89,"context_line":"from nova.pci import request as pci_request"},{"line_number":90,"context_line":"from nova.pci import whitelist"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_99ba446c","line":87,"range":{"start_line":87,"start_character":50,"end_line":87,"end_character":75},"updated":"2019-02-19 17:40:09.000000000","message":"pcir_obj?","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":84,"context_line":"from nova.objects import base as obj_base"},{"line_number":85,"context_line":"from nova.objects import fields"},{"line_number":86,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":87,"context_line":"from nova.objects import instance_pci_requests as instance_pci_requests_obj"},{"line_number":88,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":89,"context_line":"from nova.pci import request as pci_request"},{"line_number":90,"context_line":"from nova.pci import whitelist"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_a016daf0","line":87,"range":{"start_line":87,"start_character":50,"end_line":87,"end_character":75},"in_reply_to":"9fdfeff1_99ba446c","updated":"2019-02-20 15:14:11.000000000","message":"went with a good middle : pci_req_obj \n:)","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":6824,"context_line":"        # Allocate the claimed PCI resources at destination"},{"line_number":6825,"context_line":"        with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":6826,"context_line":"            self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6827,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6828,"context_line":"            # do not rely on resource_tracker periodic job"},{"line_number":6829,"context_line":"            self.rt.pci_tracker.save(context)"},{"line_number":6830,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_0d6b7685","line":6827,"range":{"start_line":6827,"start_character":14,"end_line":6827,"end_character":18},"updated":"2019-02-19 16:15:01.000000000","message":"nit: NOTE (I don\u0027t know if that matters)","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":6825,"context_line":"        with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":6826,"context_line":"            self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6827,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6828,"context_line":"            # do not rely on resource_tracker periodic job"},{"line_number":6829,"context_line":"            self.rt.pci_tracker.save(context)"},{"line_number":6830,"context_line":""},{"line_number":6831,"context_line":"        try:"},{"line_number":6832,"context_line":"            self.driver.post_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_c3253fb0","line":6829,"range":{"start_line":6828,"start_character":0,"end_line":6829,"end_character":45},"updated":"2019-02-19 16:15:01.000000000","message":"Why do we need to do this here and yet not when freeing above? Is there a potential race condition that this prevents. You\u0027ve said we don\u0027t want to rely on the periodic job but not why","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":6825,"context_line":"        with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":6826,"context_line":"            self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6827,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6828,"context_line":"            # do not rely on resource_tracker periodic job"},{"line_number":6829,"context_line":"            self.rt.pci_tracker.save(context)"},{"line_number":6830,"context_line":""},{"line_number":6831,"context_line":"        try:"},{"line_number":6832,"context_line":"            self.driver.post_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_e064e2e7","line":6829,"range":{"start_line":6828,"start_character":0,"end_line":6829,"end_character":45},"in_reply_to":"9fdfeff1_79ce802e","updated":"2019-02-20 15:14:11.000000000","message":"I believe we need to add it (pci_tracker.save()) on every allocation/free so we  don\u0027t rely on the periodic job.\nthis is being done in the resource_tracker as well e.g when performing an instance_claim() pci_tracker changes are flushed to the DB.\n\nsee: https://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L234\n\nI assume that the periodic job is there to \"fix\" any misalignments between what the actual state of the node\u0027s resources, what the resource tracker knows about them and what is reflected in the DB.\n\nany intentional modification of the resources state is persisted explicitly in the code to probably reduce the chance that an agent restart which causes the in-memory copy of the resources state to be lost (obviously), will be less likely to load an outdated state of the resources from the DB.\n\nEven if the state will later be fixed by the periodic update_available_resource() job, we should not depend on it.\n\nhope it makes sense.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":6825,"context_line":"        with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":6826,"context_line":"            self.rt.pci_tracker.allocate_instance(instance)"},{"line_number":6827,"context_line":"            # Note(adrianc): Update DB with new allocations."},{"line_number":6828,"context_line":"            # do not rely on resource_tracker periodic job"},{"line_number":6829,"context_line":"            self.rt.pci_tracker.save(context)"},{"line_number":6830,"context_line":""},{"line_number":6831,"context_line":"        try:"},{"line_number":6832,"context_line":"            self.driver.post_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_79ce802e","line":6829,"range":{"start_line":6828,"start_character":0,"end_line":6829,"end_character":45},"in_reply_to":"9fdfeff1_c3253fb0","updated":"2019-02-19 17:40:09.000000000","message":"claiming resouce within a lock prevents two green lets claiming the same resource. im not sure how we could race on freeing or how that would negatively impact the resource tracker.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":8345,"context_line":"            objects.ConsoleAuthToken.\\"},{"line_number":8346,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"},{"line_number":8347,"context_line":""},{"line_number":8348,"context_line":"    def _claim_pci_for_instance_vifs(self, ctxt, instance):"},{"line_number":8349,"context_line":"        \"\"\"Claim PCI devices for the instance\u0027s VIFs on the compute node"},{"line_number":8350,"context_line":""},{"line_number":8351,"context_line":"        :param ctxt: Context"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_20e1a12b","line":8348,"range":{"start_line":8348,"start_character":0,"end_line":8348,"end_character":59},"updated":"2019-02-19 16:15:01.000000000","message":"As a random aside, is there any reason to stick these functions at the bottom of the file as opposed to immediately after/before their caller?","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":8345,"context_line":"            objects.ConsoleAuthToken.\\"},{"line_number":8346,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"},{"line_number":8347,"context_line":""},{"line_number":8348,"context_line":"    def _claim_pci_for_instance_vifs(self, ctxt, instance):"},{"line_number":8349,"context_line":"        \"\"\"Claim PCI devices for the instance\u0027s VIFs on the compute node"},{"line_number":8350,"context_line":""},{"line_number":8351,"context_line":"        :param ctxt: Context"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_205d0ae9","line":8348,"range":{"start_line":8348,"start_character":0,"end_line":8348,"end_character":59},"in_reply_to":"9fdfeff1_20e1a12b","updated":"2019-02-20 15:14:11.000000000","message":"not really.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":8370,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8371,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8372,"context_line":"            # source node."},{"line_number":8373,"context_line":"            vif_pci_requests \u003d instance_pci_requests_obj.InstancePCIRequests("},{"line_number":8374,"context_line":"                requests\u003dpci_reqs,"},{"line_number":8375,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":8376,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_ade90ab8","line":8373,"range":{"start_line":8373,"start_character":31,"end_line":8373,"end_character":56},"updated":"2019-02-19 16:15:01.000000000","message":"nit: Can\u0027t you just use \u0027objects\u0027 here?","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":8370,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8371,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8372,"context_line":"            # source node."},{"line_number":8373,"context_line":"            vif_pci_requests \u003d instance_pci_requests_obj.InstancePCIRequests("},{"line_number":8374,"context_line":"                requests\u003dpci_reqs,"},{"line_number":8375,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":8376,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_c01f5e07","line":8373,"range":{"start_line":8373,"start_character":31,"end_line":8373,"end_character":56},"in_reply_to":"9fdfeff1_3986b8bc","updated":"2019-02-20 15:14:11.000000000","message":"went with pci_req_obj.InstancePCIRequests(...\nline is too long if i go with objects.instance_pci_request.InstancePCIRequests(..","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"0da377f867dc4595df5276cb2abef2e9119abc64","unresolved":false,"context_lines":[{"line_number":8370,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8371,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8372,"context_line":"            # source node."},{"line_number":8373,"context_line":"            vif_pci_requests \u003d instance_pci_requests_obj.InstancePCIRequests("},{"line_number":8374,"context_line":"                requests\u003dpci_reqs,"},{"line_number":8375,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":8376,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_1c0ccf92","line":8373,"range":{"start_line":8373,"start_character":31,"end_line":8373,"end_character":56},"in_reply_to":"9fdfeff1_41359eda","updated":"2019-02-21 18:20:12.000000000","message":"ill try it out, will modify when i respin.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":8370,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8371,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8372,"context_line":"            # source node."},{"line_number":8373,"context_line":"            vif_pci_requests \u003d instance_pci_requests_obj.InstancePCIRequests("},{"line_number":8374,"context_line":"                requests\u003dpci_reqs,"},{"line_number":8375,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":8376,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_3986b8bc","line":8373,"range":{"start_line":8373,"start_character":31,"end_line":8373,"end_character":56},"in_reply_to":"9fdfeff1_ade90ab8","updated":"2019-02-19 17:40:09.000000000","message":"ya it is rather verbose.\n\nobjects.instance_pci_request.InstancePCIRequests woudl also work.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"973581568a3d891ea2247af00aabda93bd8f5c46","unresolved":false,"context_lines":[{"line_number":8370,"context_line":"            # Create PCI requests and claim against PCI resource tracker"},{"line_number":8371,"context_line":"            # Note(adrianc): we Claim against the same requests as on the"},{"line_number":8372,"context_line":"            # source node."},{"line_number":8373,"context_line":"            vif_pci_requests \u003d instance_pci_requests_obj.InstancePCIRequests("},{"line_number":8374,"context_line":"                requests\u003dpci_reqs,"},{"line_number":8375,"context_line":"                instance_uuid\u003dinstance.uuid)"},{"line_number":8376,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_41359eda","line":8373,"range":{"start_line":8373,"start_character":31,"end_line":8373,"end_character":56},"in_reply_to":"9fdfeff1_c01f5e07","updated":"2019-02-21 10:01:28.000000000","message":"You don\u0027t need to do that - you can just use \u0027objects.InstancePCIRequests\u0027 afaik?","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ef3357df7485d2ad9d63637a5704dd8e73671ff1","unresolved":false,"context_lines":[{"line_number":86,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":87,"context_line":"from nova.objects import instance_pci_requests as pci_req_obj"},{"line_number":88,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":89,"context_line":"from nova.pci import request as pci_request"},{"line_number":90,"context_line":"from nova.pci import whitelist"},{"line_number":91,"context_line":"from nova import rpc"},{"line_number":92,"context_line":"from nova import safe_utils"}],"source_content_type":"text/x-python","patch_set":27,"id":"5fc1f717_53ab61d5","line":89,"updated":"2019-03-06 17:28:31.000000000","message":"the pep8 issue is from this import and we need to fix it\nwe should rename it to something like pci_req_mod","commit_id":"baba88b1d73dfee45f1ca1ca8e261664237c2da6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ef3357df7485d2ad9d63637a5704dd8e73671ff1","unresolved":false,"context_lines":[{"line_number":2127,"context_line":"                    and pci_request.requester_id in mapping)"},{"line_number":2128,"context_line":""},{"line_number":2129,"context_line":"        modified \u003d False"},{"line_number":2130,"context_line":"        for pci_request in instance.pci_requests.requests:"},{"line_number":2131,"context_line":"            if needs_update("},{"line_number":2132,"context_line":"                    pci_request, request_group_resource_providers_mapping):"},{"line_number":2133,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5fc1f717_13bcf903","line":2130,"updated":"2019-03-06 17:28:31.000000000","message":"it is shadowing this loop variable.","commit_id":"baba88b1d73dfee45f1ca1ca8e261664237c2da6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":85,"context_line":"from nova.objects import base as obj_base"},{"line_number":86,"context_line":"from nova.objects import fields"},{"line_number":87,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":88,"context_line":"from nova.objects import instance_pci_requests as pci_req_obj"},{"line_number":89,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":90,"context_line":"from nova.pci import request as pci_req_module"},{"line_number":91,"context_line":"from nova.pci import whitelist"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_7d815ac3","line":88,"updated":"2019-04-03 15:58:01.000000000","message":"this wasn\u0027t necessary. You could have just done:\n\n vif_pci_requests \u003d objects.InstancePCIRequests(\n                requests\u003dpci_reqs,\n                instance_uuid\u003dinstance.uuid)","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"from nova.objects import base as obj_base"},{"line_number":86,"context_line":"from nova.objects import fields"},{"line_number":87,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":88,"context_line":"from nova.objects import instance_pci_requests as pci_req_obj"},{"line_number":89,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":90,"context_line":"from nova.pci import request as pci_req_module"},{"line_number":91,"context_line":"from nova.pci import whitelist"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_348ac81a","line":88,"in_reply_to":"5fc1f717_7d815ac3","updated":"2019-04-07 13:03:58.000000000","message":"Done","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"710b35732837157d8e73f4e4fcd16c931d828184","unresolved":false,"context_lines":[{"line_number":85,"context_line":"from nova.objects import base as obj_base"},{"line_number":86,"context_line":"from nova.objects import fields"},{"line_number":87,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":88,"context_line":"from nova.objects import instance_pci_requests as pci_req_obj"},{"line_number":89,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":90,"context_line":"from nova.pci import request as pci_req_module"},{"line_number":91,"context_line":"from nova.pci import whitelist"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_c35e5644","line":88,"in_reply_to":"5fc1f717_7d815ac3","updated":"2019-04-04 11:40:53.000000000","message":"yes we could do that","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":87,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":88,"context_line":"from nova.objects import instance_pci_requests as pci_req_obj"},{"line_number":89,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":90,"context_line":"from nova.pci import request as pci_req_module"},{"line_number":91,"context_line":"from nova.pci import whitelist"},{"line_number":92,"context_line":"from nova import rpc"},{"line_number":93,"context_line":"from nova import safe_utils"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_bd602237","line":90,"updated":"2019-04-03 15:58:01.000000000","message":"and then you could have done this here:\n\n from nova.pci import request as pci_request","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"710b35732837157d8e73f4e4fcd16c931d828184","unresolved":false,"context_lines":[{"line_number":87,"context_line":"from nova.objects import instance as obj_instance"},{"line_number":88,"context_line":"from nova.objects import instance_pci_requests as pci_req_obj"},{"line_number":89,"context_line":"from nova.objects import migrate_data as migrate_data_obj"},{"line_number":90,"context_line":"from nova.pci import request as pci_req_module"},{"line_number":91,"context_line":"from nova.pci import whitelist"},{"line_number":92,"context_line":"from nova import rpc"},{"line_number":93,"context_line":"from nova import safe_utils"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_434b4686","line":90,"in_reply_to":"5fc1f717_bd602237","updated":"2019-04-04 11:40:53.000000000","message":"importing this as pci_request shadows uses of \npci_request as a variable elsewhere in the file\nwhich is why we named it pci_req_module.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":6211,"context_line":"                                                              dest_check_data)"},{"line_number":6212,"context_line":"            # Create migrate_data vifs"},{"line_number":6213,"context_line":"            migrate_data.vifs \u003d \\"},{"line_number":6214,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6215,"context_line":"                    instance.get_network_info())"},{"line_number":6216,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6217,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instance_vifs(ctxt, instance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_3d543254","line":6214,"range":{"start_line":6214,"start_character":16,"end_line":6214,"end_character":32},"updated":"2019-04-03 15:58:01.000000000","message":"or just:\n\n objects.LiveMigrateData","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":6211,"context_line":"                                                              dest_check_data)"},{"line_number":6212,"context_line":"            # Create migrate_data vifs"},{"line_number":6213,"context_line":"            migrate_data.vifs \u003d \\"},{"line_number":6214,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6215,"context_line":"                    instance.get_network_info())"},{"line_number":6216,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6217,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instance_vifs(ctxt, instance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_f47f6014","line":6214,"range":{"start_line":6214,"start_character":16,"end_line":6214,"end_character":32},"in_reply_to":"5fc1f717_3d543254","updated":"2019-04-07 13:03:58.000000000","message":"Does not work, for some reason python complains objects.LiveMigrateData doesnt exist","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"8bcb3bdeeef38c467c905bd471c4d5bed043137b","unresolved":false,"context_lines":[{"line_number":6211,"context_line":"                                                              dest_check_data)"},{"line_number":6212,"context_line":"            # Create migrate_data vifs"},{"line_number":6213,"context_line":"            migrate_data.vifs \u003d \\"},{"line_number":6214,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6215,"context_line":"                    instance.get_network_info())"},{"line_number":6216,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6217,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instance_vifs(ctxt, instance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_0c3bc19b","line":6214,"range":{"start_line":6214,"start_character":16,"end_line":6214,"end_character":32},"in_reply_to":"5fc1f717_dbc4bf62","updated":"2019-04-10 07:44:50.000000000","message":"Indeed, looking closer at the class def, it is not registered.\nhttps://github.com/openstack/nova/blob/d42a007425d9adb691134137e1e0b7dda356df62/nova/objects/migrate_data.py#L98\n\nprobably because LiveMigrateData is intended to be an abstract class, subclassed per hypervisor.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ecacaeb4df073d13fe208c8e48214acf5501e6bb","unresolved":false,"context_lines":[{"line_number":6211,"context_line":"                                                              dest_check_data)"},{"line_number":6212,"context_line":"            # Create migrate_data vifs"},{"line_number":6213,"context_line":"            migrate_data.vifs \u003d \\"},{"line_number":6214,"context_line":"                migrate_data_obj.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":6215,"context_line":"                    instance.get_network_info())"},{"line_number":6216,"context_line":"            # Claim PCI devices for VIFs on destination (if needed)"},{"line_number":6217,"context_line":"            port_id_to_pci \u003d self._claim_pci_for_instance_vifs(ctxt, instance)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_dbc4bf62","line":6214,"range":{"start_line":6214,"start_character":16,"end_line":6214,"end_character":32},"in_reply_to":"5fc1f717_f47f6014","updated":"2019-04-08 16:20:25.000000000","message":"Hmm, that must mean that LiveMigrateData is not registered in the oslo versionedobjects namespace registry as everything else :(","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":7190,"context_line":"                                                                     instance)"},{"line_number":7191,"context_line":"            # free any instance PCI claims done on destination during"},{"line_number":7192,"context_line":"            # check_can_live_migrate_destination()"},{"line_number":7193,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":7194,"context_line":"                self.rt.pci_tracker.free_instance_claims(context, instance)"},{"line_number":7195,"context_line":"                self.rt.pci_tracker.save(context)"},{"line_number":7196,"context_line":"            self.driver.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_f6900899","line":7193,"updated":"2019-04-03 15:58:01.000000000","message":"Could you explain why you couldn\u0027t just use utils.synchronized?","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"ac1211d239e29fe63a73cd8c262b0769e9ca9e02","unresolved":false,"context_lines":[{"line_number":7190,"context_line":"                                                                     instance)"},{"line_number":7191,"context_line":"            # free any instance PCI claims done on destination during"},{"line_number":7192,"context_line":"            # check_can_live_migrate_destination()"},{"line_number":7193,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":7194,"context_line":"                self.rt.pci_tracker.free_instance_claims(context, instance)"},{"line_number":7195,"context_line":"                self.rt.pci_tracker.save(context)"},{"line_number":7196,"context_line":"            self.driver.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_32c0c5e0","line":7193,"in_reply_to":"5fc1f717_3ed17158","updated":"2019-04-04 13:02:57.000000000","message":"the goal was to lock as a context manager not a decorator. (and avoid defining a new method just for the sake of locking)\n\ncan you use utils.synchronized as a context manager? if yes then excuse my ignorance :)\n\nutils.lock() is basically a partial func that uses lockutils.lock(). its the same method used in the utils.synchronized decorator.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"710b35732837157d8e73f4e4fcd16c931d828184","unresolved":false,"context_lines":[{"line_number":7190,"context_line":"                                                                     instance)"},{"line_number":7191,"context_line":"            # free any instance PCI claims done on destination during"},{"line_number":7192,"context_line":"            # check_can_live_migrate_destination()"},{"line_number":7193,"context_line":"            with utils.lock(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):"},{"line_number":7194,"context_line":"                self.rt.pci_tracker.free_instance_claims(context, instance)"},{"line_number":7195,"context_line":"                self.rt.pci_tracker.save(context)"},{"line_number":7196,"context_line":"            self.driver.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_3ed17158","line":7193,"in_reply_to":"5fc1f717_f6900899","updated":"2019-04-04 11:40:53.000000000","message":"utils.synchronizedis just\n\nsynchronized \u003d lockutils.synchronized_with_prefix(\u0027nova-\u0027)\nand we woudl use it like this \nwith utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE):\n  ...\n\nother then the fact we wilil have to wrap it i dont see any reason not to to this here ane elsewhere.\n\nthat is what the RT does internally \nhttps://github.com/openstack/nova/blob/56947658b0856c92081cd044f981ae5282b7c10e/nova/compute/resource_tracker.py#L156","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":6720,"context_line":""},{"line_number":6721,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":6722,"context_line":""},{"line_number":6723,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6724,"context_line":"    def _free_instance_allocations(self, context, instance):"},{"line_number":6725,"context_line":"        \"\"\"Free instance allocated PCI resources"},{"line_number":6726,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_91cddc5e","line":6723,"updated":"2019-04-05 17:35:16.000000000","message":"++ thanks for moving this.","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":6721,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":6722,"context_line":""},{"line_number":6723,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6724,"context_line":"    def _free_instance_allocations(self, context, instance):"},{"line_number":6725,"context_line":"        \"\"\"Free instance allocated PCI resources"},{"line_number":6726,"context_line":""},{"line_number":6727,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_913b9c36","line":6724,"range":{"start_line":6724,"start_character":8,"end_line":6724,"end_character":34},"updated":"2019-04-05 17:35:16.000000000","message":"Can we please call this _free_pci_devices_for_instance() so that it is clear what this is doing? There is a very specific thing called \"instance allocations\" that refers to the placement allocation records for all the normal resources associated with an instance, and naming this method _free_instance_allocations() when it doesn\u0027t have anything to do with the \"instance allocations\" is supremely confusing.","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":6721,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":6722,"context_line":""},{"line_number":6723,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6724,"context_line":"    def _free_instance_allocations(self, context, instance):"},{"line_number":6725,"context_line":"        \"\"\"Free instance allocated PCI resources"},{"line_number":6726,"context_line":""},{"line_number":6727,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_d47a6422","line":6724,"range":{"start_line":6724,"start_character":8,"end_line":6724,"end_character":34},"in_reply_to":"5fc1f717_913b9c36","updated":"2019-04-07 13:03:58.000000000","message":"Done","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"968ae31cf6449a7b2532db1420a5249ef5cd5767","unresolved":false,"context_lines":[{"line_number":6721,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":6722,"context_line":""},{"line_number":6723,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6724,"context_line":"    def _free_instance_allocations(self, context, instance):"},{"line_number":6725,"context_line":"        \"\"\"Free instance allocated PCI resources"},{"line_number":6726,"context_line":""},{"line_number":6727,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_f119c087","line":6724,"range":{"start_line":6724,"start_character":8,"end_line":6724,"end_character":34},"in_reply_to":"5fc1f717_913b9c36","updated":"2019-04-05 17:48:29.000000000","message":"istanmce allocation in this context are not related to placement allcoation.\n\ni called it this because its calling the pci resouce trackers\nfree_instance_allocations function but im happy to rename it.","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":6731,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6732,"context_line":""},{"line_number":6733,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6734,"context_line":"    def _allocate_instance_claims(self, context, instance):"},{"line_number":6735,"context_line":"        \"\"\"Allocate instance claimed PCI resources"},{"line_number":6736,"context_line":""},{"line_number":6737,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_314428b8","line":6734,"range":{"start_line":6734,"start_character":8,"end_line":6734,"end_character":33},"updated":"2019-04-05 17:35:16.000000000","message":"This method name is also very confusing. Can we call it _allocate_pci_devices_for_instance() please?","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":6731,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6732,"context_line":""},{"line_number":6733,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6734,"context_line":"    def _allocate_instance_claims(self, context, instance):"},{"line_number":6735,"context_line":"        \"\"\"Allocate instance claimed PCI resources"},{"line_number":6736,"context_line":""},{"line_number":6737,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_54943437","line":6734,"range":{"start_line":6734,"start_character":8,"end_line":6734,"end_character":33},"in_reply_to":"5fc1f717_314428b8","updated":"2019-04-07 13:03:58.000000000","message":"Done","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"968ae31cf6449a7b2532db1420a5249ef5cd5767","unresolved":false,"context_lines":[{"line_number":6731,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6732,"context_line":""},{"line_number":6733,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6734,"context_line":"    def _allocate_instance_claims(self, context, instance):"},{"line_number":6735,"context_line":"        \"\"\"Allocate instance claimed PCI resources"},{"line_number":6736,"context_line":""},{"line_number":6737,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_b10fb837","line":6734,"range":{"start_line":6734,"start_character":8,"end_line":6734,"end_character":33},"in_reply_to":"5fc1f717_314428b8","updated":"2019-04-05 17:48:29.000000000","message":"sure","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":6741,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6742,"context_line":""},{"line_number":6743,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6744,"context_line":"    def _claim_vif_pci_devices(self, context, vif_pci_requests):"},{"line_number":6745,"context_line":"        \"\"\"Cliam instance PCI resources for vifs"},{"line_number":6746,"context_line":""},{"line_number":6747,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_5141b4a5","line":6744,"range":{"start_line":6744,"start_character":8,"end_line":6744,"end_character":30},"updated":"2019-04-05 17:35:16.000000000","message":"Move this entire method into the _claim_pci_for_instance_vifs() method below and put the semaphore around that method instead. After all, you want to claim all the PCI devices for an instance atomically, no?","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"968ae31cf6449a7b2532db1420a5249ef5cd5767","unresolved":false,"context_lines":[{"line_number":6741,"context_line":"        self.rt.pci_tracker.save(context)"},{"line_number":6742,"context_line":""},{"line_number":6743,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6744,"context_line":"    def _claim_vif_pci_devices(self, context, vif_pci_requests):"},{"line_number":6745,"context_line":"        \"\"\"Cliam instance PCI resources for vifs"},{"line_number":6746,"context_line":""},{"line_number":6747,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_ac52fb10","line":6744,"range":{"start_line":6744,"start_character":8,"end_line":6744,"end_character":30},"in_reply_to":"5fc1f717_5141b4a5","updated":"2019-04-05 17:48:29.000000000","message":"well this is claiming all the pci request in this function.\n\n_claim_pci_for_instance_vifs loop over the interfaces\nextract all the pci request and then calls this fucntion.\n\nso we are already doing this atomicaly and this keeps the code in the lock as small as it can be.","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":6742,"context_line":""},{"line_number":6743,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6744,"context_line":"    def _claim_vif_pci_devices(self, context, vif_pci_requests):"},{"line_number":6745,"context_line":"        \"\"\"Cliam instance PCI resources for vifs"},{"line_number":6746,"context_line":""},{"line_number":6747,"context_line":"        :param context: security context"},{"line_number":6748,"context_line":"        :param vif_pci_requests: a list of nova.objects.InstancePCIRequests"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_f105407b","line":6745,"range":{"start_line":6745,"start_character":11,"end_line":6745,"end_character":16},"updated":"2019-04-05 17:35:16.000000000","message":"Claim","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":6742,"context_line":""},{"line_number":6743,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6744,"context_line":"    def _claim_vif_pci_devices(self, context, vif_pci_requests):"},{"line_number":6745,"context_line":"        \"\"\"Cliam instance PCI resources for vifs"},{"line_number":6746,"context_line":""},{"line_number":6747,"context_line":"        :param context: security context"},{"line_number":6748,"context_line":"        :param vif_pci_requests: a list of nova.objects.InstancePCIRequests"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_14854c07","line":6745,"range":{"start_line":6745,"start_character":11,"end_line":6745,"end_character":16},"in_reply_to":"5fc1f717_f105407b","updated":"2019-04-07 13:03:58.000000000","message":"Done","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"968ae31cf6449a7b2532db1420a5249ef5cd5767","unresolved":false,"context_lines":[{"line_number":6742,"context_line":""},{"line_number":6743,"context_line":"    @utils.synchronized(resource_tracker.COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":6744,"context_line":"    def _claim_vif_pci_devices(self, context, vif_pci_requests):"},{"line_number":6745,"context_line":"        \"\"\"Cliam instance PCI resources for vifs"},{"line_number":6746,"context_line":""},{"line_number":6747,"context_line":"        :param context: security context"},{"line_number":6748,"context_line":"        :param vif_pci_requests: a list of nova.objects.InstancePCIRequests"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_6c409336","line":6745,"range":{"start_line":6745,"start_character":11,"end_line":6745,"end_character":16},"in_reply_to":"5fc1f717_f105407b","updated":"2019-04-05 17:48:29.000000000","message":"yep ill fix","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b2665154a9eaecc3e1fbaae8081fe4fa339d101f","unresolved":false,"context_lines":[{"line_number":7219,"context_line":"                                                                     instance)"},{"line_number":7220,"context_line":"            # free any instance PCI claims done on destination during"},{"line_number":7221,"context_line":"            # check_can_live_migrate_destination()"},{"line_number":7222,"context_line":"            self._free_instance_allocations(context, instance)"},{"line_number":7223,"context_line":""},{"line_number":7224,"context_line":"            self.driver.rollback_live_migration_at_destination("},{"line_number":7225,"context_line":"                context, instance, network_info, block_device_info,"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_54367405","line":7222,"range":{"start_line":7222,"start_character":31,"end_line":7222,"end_character":43},"updated":"2019-04-07 13:03:58.000000000","message":"previous PS freed instance claims, here you free instance allocations, these are two separate states a PCI device may be in.\n\ni will add a new : free_pci_device_claims_for_instance() an call it here in the next PS\n\nwill also move the allocate/claim/free pci devices methods to resource_tracker as suggested by jaypipes","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"02cb7b81af9d8db7ff9e4ad77ede0b1d4b5a5259","unresolved":false,"context_lines":[{"line_number":8564,"context_line":"            objects.ConsoleAuthToken.\\"},{"line_number":8565,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"},{"line_number":8566,"context_line":""},{"line_number":8567,"context_line":"    def _claim_pci_for_instance_vifs(self, ctxt, instance):"},{"line_number":8568,"context_line":"        \"\"\"Claim PCI devices for the instance\u0027s VIFs on the compute node"},{"line_number":8569,"context_line":""},{"line_number":8570,"context_line":"        :param ctxt: Context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_511a14c6","line":8567,"range":{"start_line":8567,"start_character":8,"end_line":8567,"end_character":36},"updated":"2019-04-05 17:35:16.000000000","message":"How about just _claim_pci_devices_for_instance()?","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"968ae31cf6449a7b2532db1420a5249ef5cd5767","unresolved":false,"context_lines":[{"line_number":8564,"context_line":"            objects.ConsoleAuthToken.\\"},{"line_number":8565,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"},{"line_number":8566,"context_line":""},{"line_number":8567,"context_line":"    def _claim_pci_for_instance_vifs(self, ctxt, instance):"},{"line_number":8568,"context_line":"        \"\"\"Claim PCI devices for the instance\u0027s VIFs on the compute node"},{"line_number":8569,"context_line":""},{"line_number":8570,"context_line":"        :param ctxt: Context"}],"source_content_type":"text/x-python","patch_set":31,"id":"5fc1f717_5179b4c2","line":8567,"range":{"start_line":8567,"start_character":8,"end_line":8567,"end_character":36},"in_reply_to":"5fc1f717_511a14c6","updated":"2019-04-05 17:48:29.000000000","message":"this only claims the pci device related to the instance neutron ports.\n\ni we have other pci devices that are requested via the flavor this does not claime them so i think the \"vifs\" part of the name is important.","commit_id":"c49813ccfb1e50d4973dd79038fb32ee3c8c1b5e"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":1549,"context_line":"        self.pci_tracker.save(context)"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":1552,"context_line":"    def free_pci_device_claims_for_instance(self, context, instance):"},{"line_number":1553,"context_line":"        \"\"\"Free instance claimed PCI resources"},{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_d4ccc862","line":1552,"range":{"start_line":1552,"start_character":8,"end_line":1552,"end_character":43},"updated":"2019-04-25 14:01:06.000000000","message":"unclaim_pci_devices ?","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"32479555c090baa0ec4289f6b5cfab2af8f98e47","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        if (self.network_api.supports_port_binding_extension(self.context) and"},{"line_number":259,"context_line":"                supports_extended_port_binding(self.context, self.source) and"},{"line_number":260,"context_line":"                supports_extended_port_binding(self.context, destination)):"},{"line_number":261,"context_line":"            self.migrate_data.vifs \u003d ("},{"line_number":262,"context_line":"                self._bind_ports_on_destination(destination))"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def _bind_ports_on_destination(self, destination):"},{"line_number":265,"context_line":"        LOG.debug(\u0027Start binding ports on destination host: %s\u0027, destination,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_13c6839c","line":262,"range":{"start_line":261,"start_character":12,"end_line":262,"end_character":61},"updated":"2018-11-26 20:16:36.000000000","message":"so i think you have missed that fact that before this change\nmigrate_data.vifs is only ever set here\nbut you are now also setting it at \nhttps://review.openstack.org/#/c/620115/1/nova/compute/manager.py@6002\n\nwe need to think about the orderign here as we should not activate any of the new sriov code until after we have confirmed that both sides support multiple port binding\nand neutron does and we have created a new port binding on the destination node.","commit_id":"9b3aa4d2d04c9d17effb51ee4a9ed33889bbdb1f"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"bd649ead637e76cb37c319ef01477144efaa23b7","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        if (self.network_api.supports_port_binding_extension(self.context) and"},{"line_number":259,"context_line":"                supports_extended_port_binding(self.context, self.source) and"},{"line_number":260,"context_line":"                supports_extended_port_binding(self.context, destination)):"},{"line_number":261,"context_line":"            self.migrate_data.vifs \u003d ("},{"line_number":262,"context_line":"                self._bind_ports_on_destination(destination))"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def _bind_ports_on_destination(self, destination):"},{"line_number":265,"context_line":"        LOG.debug(\u0027Start binding ports on destination host: %s\u0027, destination,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_68b7b6d2","line":262,"range":{"start_line":261,"start_character":12,"end_line":262,"end_character":61},"in_reply_to":"3f79a3b5_13c6839c","updated":"2018-11-27 13:47:18.000000000","message":"actually i was aware of this bit of code,\nin https://review.openstack.org/#/c/620115/1/nova/compute/manager.py@6002\ni am building the migrate vifs partially as the full binding information will be available only after the the actual neutron port binding call takes place in conductor.\n_bind_ports_on_destination() fully re-builds the vifs and we replace the migrate vif objects (which contain partial information) that were previously created on the destination during check_can_live_migrate_destination().\n\ni will need to do this in a more elegant way, as i agree this is confusing.\n\nalso as you suggested, ill add a check to make sure src, destination computes support the SR-IOV flow and neutron supports multiple port bindings if SR-IOV LM is required.\n(will fail the migration if the prereq are not met)\n\nfor the computes ill do that by checking the compute service version what do you think?","commit_id":"9b3aa4d2d04c9d17effb51ee4a9ed33889bbdb1f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"32479555c090baa0ec4289f6b5cfab2af8f98e47","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                      \u0027instance_uuid\u0027: self.instance.uuid})"},{"line_number":457,"context_line":"            raise exception.MaxRetriesExceeded(reason\u003dmsg)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def _get_updated_vif_profile(self, vif):"},{"line_number":460,"context_line":"        if self.migrate_data.vifs:"},{"line_number":461,"context_line":"            for migrate_vif in self.migrate_data.vifs:"},{"line_number":462,"context_line":"                if migrate_vif.port_id \u003d\u003d vif[\u0027id\u0027]:"},{"line_number":463,"context_line":"                    return migrate_vif.profile"},{"line_number":464,"context_line":"        return vif[\u0027profile\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_33ce1f8f","line":464,"range":{"start_line":459,"start_character":4,"end_line":464,"end_character":29},"updated":"2018-11-26 20:16:36.000000000","message":"this is rather messy you this is using info from \nself.migrate_data.vifs in a function that is assign to\nself.migrate_data.vifs without passing it in","commit_id":"9b3aa4d2d04c9d17effb51ee4a9ed33889bbdb1f"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"bd649ead637e76cb37c319ef01477144efaa23b7","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                      \u0027instance_uuid\u0027: self.instance.uuid})"},{"line_number":457,"context_line":"            raise exception.MaxRetriesExceeded(reason\u003dmsg)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def _get_updated_vif_profile(self, vif):"},{"line_number":460,"context_line":"        if self.migrate_data.vifs:"},{"line_number":461,"context_line":"            for migrate_vif in self.migrate_data.vifs:"},{"line_number":462,"context_line":"                if migrate_vif.port_id \u003d\u003d vif[\u0027id\u0027]:"},{"line_number":463,"context_line":"                    return migrate_vif.profile"},{"line_number":464,"context_line":"        return vif[\u0027profile\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_48eafaa0","line":464,"range":{"start_line":459,"start_character":4,"end_line":464,"end_character":29},"in_reply_to":"3f79a3b5_33ce1f8f","updated":"2018-11-27 13:47:18.000000000","message":"ill pass migrate_vifs as parameter, also see previous comment.","commit_id":"9b3aa4d2d04c9d17effb51ee4a9ed33889bbdb1f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _check_can_migrate_pci(self, src_host, dest_host):"},{"line_number":194,"context_line":"        \"\"\"Checks that an instance can migrate with PCI requests"},{"line_number":195,"context_line":"        ATM support only if:"},{"line_number":196,"context_line":"        Instance contains VIF related PCI requests,"},{"line_number":197,"context_line":"        Neutron supports multiple port binding extension,"},{"line_number":198,"context_line":"        Src and Dest host support VIF related PCI allocations."}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_d945f044","line":195,"updated":"2019-01-10 14:38:50.000000000","message":"nit: line above this. Also, \"At the moment\". The below could be bullet points","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _check_can_migrate_pci(self, src_host, dest_host):"},{"line_number":194,"context_line":"        \"\"\"Checks that an instance can migrate with PCI requests"},{"line_number":195,"context_line":"        ATM support only if:"},{"line_number":196,"context_line":"        Instance contains VIF related PCI requests,"},{"line_number":197,"context_line":"        Neutron supports multiple port binding extension,"},{"line_number":198,"context_line":"        Src and Dest host support VIF related PCI allocations."}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_24c08350","line":195,"in_reply_to":"bfdaf3ff_83e705e5","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _check_can_migrate_pci(self, src_host, dest_host):"},{"line_number":194,"context_line":"        \"\"\"Checks that an instance can migrate with PCI requests"},{"line_number":195,"context_line":"        ATM support only if:"},{"line_number":196,"context_line":"        Instance contains VIF related PCI requests,"},{"line_number":197,"context_line":"        Neutron supports multiple port binding extension,"},{"line_number":198,"context_line":"        Src and Dest host support VIF related PCI allocations."}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_83e705e5","line":195,"in_reply_to":"bfdaf3ff_dbcbc6a2","updated":"2019-01-15 11:39:09.000000000","message":"Sorry, I meant expand ATM to \u0027At the moment\u0027, not \u0027Also at the moment\u0027 :)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _check_can_migrate_pci(self, src_host, dest_host):"},{"line_number":194,"context_line":"        \"\"\"Checks that an instance can migrate with PCI requests"},{"line_number":195,"context_line":"        ATM support only if:"},{"line_number":196,"context_line":"        Instance contains VIF related PCI requests,"},{"line_number":197,"context_line":"        Neutron supports multiple port binding extension,"},{"line_number":198,"context_line":"        Src and Dest host support VIF related PCI allocations."}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_dbcbc6a2","line":195,"in_reply_to":"dfd5e7cf_d945f044","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        Neutron supports multiple port binding extension,"},{"line_number":198,"context_line":"        Src and Dest host support VIF related PCI allocations."},{"line_number":199,"context_line":"        \"\"\""},{"line_number":200,"context_line":"        if self.instance.pci_requests is not None and len("},{"line_number":201,"context_line":"                self.instance.pci_requests.requests) \u003e 0:"},{"line_number":202,"context_line":"            for pci_request in self.instance.pci_requests.requests:"},{"line_number":203,"context_line":"                if pci_request.alias_name is not None:"},{"line_number":204,"context_line":"                    # allow only VIF related pci requests in live migration"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_39a51c05","line":201,"range":{"start_line":200,"start_character":0,"end_line":201,"end_character":57},"updated":"2019-01-10 14:38:50.000000000","message":"nit: as elsewhere:\n\n  if self.instance.pci_requests is None or not len(\n          self.instance.pci_requests.requests):\n      continue\n\nguess we could also add a \u0027__bool__\u0027 function to \u0027InstancePCIRequests\u0027 to allow us to simply say:\n\n  if not self.instance.pci_requests\n\nbut that\u0027s a nice-to-have","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        Neutron supports multiple port binding extension,"},{"line_number":198,"context_line":"        Src and Dest host support VIF related PCI allocations."},{"line_number":199,"context_line":"        \"\"\""},{"line_number":200,"context_line":"        if self.instance.pci_requests is not None and len("},{"line_number":201,"context_line":"                self.instance.pci_requests.requests) \u003e 0:"},{"line_number":202,"context_line":"            for pci_request in self.instance.pci_requests.requests:"},{"line_number":203,"context_line":"                if pci_request.alias_name is not None:"},{"line_number":204,"context_line":"                    # allow only VIF related pci requests in live migration"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_7bedfaed","line":201,"range":{"start_line":200,"start_character":0,"end_line":201,"end_character":57},"in_reply_to":"dfd5e7cf_39a51c05","updated":"2019-01-14 19:36:08.000000000","message":"went with the first option :)\n\nalthough using a dunder method is more elegant,\nimpl will differ in python 2.x and 3.x","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":321,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":322,"context_line":"                # skeleton to be updated after port binding."},{"line_number":323,"context_line":"                self.migrate_data.vifs \u003d \\"},{"line_number":324,"context_line":"                    migrate_data_obj.LiveMigrateData.\\"},{"line_number":325,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":326,"context_line":"                        self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_b9b82c2a","line":323,"range":{"start_line":323,"start_character":41,"end_line":323,"end_character":42},"updated":"2019-01-10 14:38:50.000000000","message":"nit: don\u0027t think we need to wrap here, though I haven\u0027t checked","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":321,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":322,"context_line":"                # skeleton to be updated after port binding."},{"line_number":323,"context_line":"                self.migrate_data.vifs \u003d \\"},{"line_number":324,"context_line":"                    migrate_data_obj.LiveMigrateData.\\"},{"line_number":325,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":326,"context_line":"                        self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_7b1e5abb","line":323,"range":{"start_line":323,"start_character":41,"end_line":323,"end_character":42},"in_reply_to":"dfd5e7cf_b9b82c2a","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            migrate_vifs_with_profile \u003d [mig_vif for mig_vif in"},{"line_number":345,"context_line":"                                         self.migrate_data.vifs"},{"line_number":346,"context_line":"                                         if \u0027profile_json\u0027 in mig_vif]"},{"line_number":347,"context_line":"            ports_profile \u003d {"},{"line_number":348,"context_line":"                mig_vif.port_id: mig_vif.profile"},{"line_number":349,"context_line":"                for mig_vif in migrate_vifs_with_profile} if len("},{"line_number":350,"context_line":"                migrate_vifs_with_profile) else None"},{"line_number":351,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":352,"context_line":"                self.context, self.instance, destination, None, ports_profile)"},{"line_number":353,"context_line":"        except exception.PortBindingFailed as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_397e7c6b","line":350,"range":{"start_line":347,"start_character":0,"end_line":350,"end_character":52},"updated":"2019-01-10 14:38:50.000000000","message":"I\u0027m inclined to say we should just use for loops rather than dictionary comprehension here, as this is pretty tough to parse","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            migrate_vifs_with_profile \u003d [mig_vif for mig_vif in"},{"line_number":345,"context_line":"                                         self.migrate_data.vifs"},{"line_number":346,"context_line":"                                         if \u0027profile_json\u0027 in mig_vif]"},{"line_number":347,"context_line":"            ports_profile \u003d {"},{"line_number":348,"context_line":"                mig_vif.port_id: mig_vif.profile"},{"line_number":349,"context_line":"                for mig_vif in migrate_vifs_with_profile} if len("},{"line_number":350,"context_line":"                migrate_vifs_with_profile) else None"},{"line_number":351,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":352,"context_line":"                self.context, self.instance, destination, None, ports_profile)"},{"line_number":353,"context_line":"        except exception.PortBindingFailed as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_5bfd9638","line":350,"range":{"start_line":347,"start_character":0,"end_line":350,"end_character":52},"in_reply_to":"dfd5e7cf_397e7c6b","updated":"2019-01-14 19:36:08.000000000","message":"the dictionary comprehension is just :\n\n{mig_vif.port_id: mig_vif.profile\nfor mig_vif in migrate_vifs_with_profile}\n\nI think the comprehension by itself pretty readable.\nthe conditional assignment however makes this statement a bit tough to chew on IMO.\n\nill try to simplify, let me know if it digests better on the next PS.","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _check_can_migrate_pci(self, src_host, dest_host):"},{"line_number":194,"context_line":"        \"\"\"Checks that an instance can migrate with PCI requests"},{"line_number":195,"context_line":"        Also, at the moment support only if:"},{"line_number":196,"context_line":"            1. Instance contains VIF related PCI requests."},{"line_number":197,"context_line":"            2. Neutron supports multiple port binding extension."},{"line_number":198,"context_line":"            3. Src and Dest host support VIF related PCI allocations."}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_a3ea49a9","line":195,"range":{"start_line":195,"start_character":8,"end_line":195,"end_character":16},"updated":"2019-01-15 11:39:09.000000000","message":"At\n\nA newline before after this line would make this slightly easier to read","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"63447ebbb67901abb6880355fc7fb17d3ffd8278","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _check_can_migrate_pci(self, src_host, dest_host):"},{"line_number":194,"context_line":"        \"\"\"Checks that an instance can migrate with PCI requests"},{"line_number":195,"context_line":"        Also, at the moment support only if:"},{"line_number":196,"context_line":"            1. Instance contains VIF related PCI requests."},{"line_number":197,"context_line":"            2. Neutron supports multiple port binding extension."},{"line_number":198,"context_line":"            3. Src and Dest host support VIF related PCI allocations."}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_04a21faf","line":195,"range":{"start_line":195,"start_character":8,"end_line":195,"end_character":16},"in_reply_to":"bfdaf3ff_a3ea49a9","updated":"2019-01-16 16:55:18.000000000","message":"Done","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2616c2ea47e4b17304d1ae6260290934c42c2a20","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                                         self.migrate_data.vifs"},{"line_number":347,"context_line":"                                         if \u0027profile_json\u0027 in mig_vif]"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"            ports_profile \u003d None"},{"line_number":350,"context_line":"            if len(migrate_vifs_with_profile):"},{"line_number":351,"context_line":"                # Update to the port profile is required"},{"line_number":352,"context_line":"                ports_profile \u003d {mig_vif.port_id: mig_vif.profile"},{"line_number":353,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":356,"context_line":"                self.context, self.instance, destination, None, ports_profile)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdaf3ff_433fdd24","line":353,"range":{"start_line":349,"start_character":0,"end_line":353,"end_character":74},"updated":"2019-01-15 11:39:09.000000000","message":"Better","commit_id":"661dd591c94a9203c1a63e17789b83539a364527"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        for pci_request in self.instance.pci_requests.requests:"},{"line_number":209,"context_line":"            if pci_request.alias_name is not None:"},{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_ba7ea316","line":209,"range":{"start_line":209,"start_character":12,"end_line":209,"end_character":50},"updated":"2019-02-12 17:32:38.000000000","message":"It would be helpful to document why this is a suitable heuristic for \"I\u0027m a PCI passthrough device\" as we do for the RT [1]. Alternative, a property on the PCIRequest class (\u0027is_sriov_port\u0027?) would be a good usability improvement\n\n[1] https://github.com/openstack/nova/blob/78d6aca9a6cfb2/nova/compute/resource_tracker.py#L311-L314","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"984d956d9c59b34996f19f73974302945666b6b0","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        for pci_request in self.instance.pci_requests.requests:"},{"line_number":209,"context_line":"            if pci_request.alias_name is not None:"},{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_a49afc10","line":209,"range":{"start_line":209,"start_character":12,"end_line":209,"end_character":50},"in_reply_to":"9fdfeff1_ba7ea316","updated":"2019-02-13 09:52:21.000000000","message":"I can introduce the improvement in a separate patch.\nwill add a comment to clarify meanwhile.","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            if pci_request.alias_name is not None:"},{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""},{"line_number":213,"context_line":"                            \"is not allowed in live migration.\")"},{"line_number":214,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":215,"context_line":"        # source and destination compute nodes."}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_9abf1fa9","line":212,"range":{"start_line":212,"start_character":29,"end_line":212,"end_character":36},"updated":"2019-02-12 17:32:38.000000000","message":"non-VIF","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5a8d908b517e08a24537c70894851d8cc9c61b79","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            if pci_request.alias_name is not None:"},{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""},{"line_number":213,"context_line":"                            \"is not allowed in live migration.\")"},{"line_number":214,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":215,"context_line":"        # source and destination compute nodes."}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_2eefbe1d","line":212,"range":{"start_line":212,"start_character":29,"end_line":212,"end_character":36},"in_reply_to":"9fdfeff1_9abf1fa9","updated":"2019-02-13 17:25:03.000000000","message":"Done","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""},{"line_number":213,"context_line":"                            \"is not allowed in live migration.\")"},{"line_number":214,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":215,"context_line":"        # source and destination compute nodes."},{"line_number":216,"context_line":"        if not self.network_api.supports_port_binding_extension("}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_fae3cbd6","line":213,"range":{"start_line":213,"start_character":29,"end_line":213,"end_character":31},"updated":"2019-02-12 17:32:38.000000000","message":"are","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""},{"line_number":213,"context_line":"                            \"is not allowed in live migration.\")"},{"line_number":214,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":215,"context_line":"        # source and destination compute nodes."},{"line_number":216,"context_line":"        if not self.network_api.supports_port_binding_extension("}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_1ae9efb5","line":213,"range":{"start_line":213,"start_character":44,"end_line":213,"end_character":46},"updated":"2019-02-12 17:32:38.000000000","message":"for?","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5a8d908b517e08a24537c70894851d8cc9c61b79","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""},{"line_number":213,"context_line":"                            \"is not allowed in live migration.\")"},{"line_number":214,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":215,"context_line":"        # source and destination compute nodes."},{"line_number":216,"context_line":"        if not self.network_api.supports_port_binding_extension("}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_4ef482f1","line":213,"range":{"start_line":213,"start_character":44,"end_line":213,"end_character":46},"in_reply_to":"9fdfeff1_1ae9efb5","updated":"2019-02-13 17:25:03.000000000","message":"Done","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5a8d908b517e08a24537c70894851d8cc9c61b79","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                # allow only VIF related pci requests in live migration"},{"line_number":211,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":212,"context_line":"                    reason\u003d \"non VIF related PCI requests for instance \""},{"line_number":213,"context_line":"                            \"is not allowed in live migration.\")"},{"line_number":214,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":215,"context_line":"        # source and destination compute nodes."},{"line_number":216,"context_line":"        if not self.network_api.supports_port_binding_extension("}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_eedc5675","line":213,"range":{"start_line":213,"start_character":29,"end_line":213,"end_character":31},"in_reply_to":"9fdfeff1_fae3cbd6","updated":"2019-02-13 17:25:03.000000000","message":"Done","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                            \"are not allowed for live migration.\")"},{"line_number":220,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":221,"context_line":"        # source and destination compute nodes."},{"line_number":222,"context_line":"        if not self.network_api.supports_port_binding_extension("},{"line_number":223,"context_line":"                self.context):"},{"line_number":224,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":225,"context_line":"                reason\u003d\"Cannot live migrate VIF with related PCI, Neutron \""},{"line_number":226,"context_line":"                       \"does not support required port binding extension.\")"},{"line_number":227,"context_line":"        if not (supports_vif_related_pci_allocations(self.context,"},{"line_number":228,"context_line":"                                                     src_host) and"},{"line_number":229,"context_line":"                supports_vif_related_pci_allocations(self.context,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_942a0b2a","line":226,"range":{"start_line":222,"start_character":7,"end_line":226,"end_character":75},"updated":"2019-02-19 17:40:09.000000000","message":"this is not needed if you move the call later. see comments below","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                            \"are not allowed for live migration.\")"},{"line_number":220,"context_line":"        # All PCI requests are VIF related, now check neutron,"},{"line_number":221,"context_line":"        # source and destination compute nodes."},{"line_number":222,"context_line":"        if not self.network_api.supports_port_binding_extension("},{"line_number":223,"context_line":"                self.context):"},{"line_number":224,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":225,"context_line":"                reason\u003d\"Cannot live migrate VIF with related PCI, Neutron \""},{"line_number":226,"context_line":"                       \"does not support required port binding extension.\")"},{"line_number":227,"context_line":"        if not (supports_vif_related_pci_allocations(self.context,"},{"line_number":228,"context_line":"                                                     src_host) and"},{"line_number":229,"context_line":"                supports_vif_related_pci_allocations(self.context,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_e322ac01","line":226,"range":{"start_line":222,"start_character":7,"end_line":226,"end_character":75},"in_reply_to":"9fdfeff1_942a0b2a","updated":"2019-02-20 15:14:11.000000000","message":"please see comments below.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        return source_info, destination_info"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def _call_livem_checks_on_host(self, destination):"},{"line_number":315,"context_line":"        self._check_can_migrate_pci(self.source, destination)"},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            self.migrate_data \u003d self.compute_rpcapi.\\"},{"line_number":318,"context_line":"                check_can_live_migrate_destination(self.context, self.instance,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_d4d4134a","line":315,"range":{"start_line":315,"start_character":7,"end_line":315,"end_character":61},"updated":"2019-02-19 17:40:09.000000000","message":"this check is incorrect\n\nit should be after we bind the ports on line 338","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        return source_info, destination_info"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def _call_livem_checks_on_host(self, destination):"},{"line_number":315,"context_line":"        self._check_can_migrate_pci(self.source, destination)"},{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            self.migrate_data \u003d self.compute_rpcapi.\\"},{"line_number":318,"context_line":"                check_can_live_migrate_destination(self.context, self.instance,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_239c345c","line":315,"range":{"start_line":315,"start_character":7,"end_line":315,"end_character":61},"in_reply_to":"9fdfeff1_d4d4134a","updated":"2019-02-20 15:14:11.000000000","message":"well since live migration with PCI device is pretty much broken (see comment history around the commit message) I think it\u0027s preferable to improve the user experience and block it with a clear error.\n\nthe release note that accidently disappeared in PS23 reflected that.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                supports_extended_port_binding(self.context, self.source) and"},{"line_number":330,"context_line":"                supports_extended_port_binding(self.context, destination)):"},{"line_number":331,"context_line":"            if \u0027vifs\u0027 not in self.migrate_data:"},{"line_number":332,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":333,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":334,"context_line":"                # skeleton to be updated after port binding."},{"line_number":335,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_e3be43d3","line":334,"range":{"start_line":332,"start_character":0,"end_line":334,"end_character":60},"updated":"2019-02-19 16:15:01.000000000","message":"What would cause this to happen and why do we care? I\u0027m assuming old code for the former, but I\u0027m not sure about the latter. Do we need a TODO to remove this in a future release once we\u0027re sure this is being done?","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                supports_extended_port_binding(self.context, self.source) and"},{"line_number":330,"context_line":"                supports_extended_port_binding(self.context, destination)):"},{"line_number":331,"context_line":"            if \u0027vifs\u0027 not in self.migrate_data:"},{"line_number":332,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":333,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":334,"context_line":"                # skeleton to be updated after port binding."},{"line_number":335,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_439ff864","line":334,"range":{"start_line":332,"start_character":0,"end_line":334,"end_character":60},"in_reply_to":"9fdfeff1_7943e06d","updated":"2019-02-20 15:14:11.000000000","message":"actually this commit introduced the fact that the compute node is now creating the migrate vifs.\n\nprior to this commit, migrate vifs were created in _bind_ports_on_destination() by the conductor.\n\nso in case the compute node did not create the migrate vifs, conductor should do it.\n\nill add a TODO to remove this.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                supports_extended_port_binding(self.context, self.source) and"},{"line_number":330,"context_line":"                supports_extended_port_binding(self.context, destination)):"},{"line_number":331,"context_line":"            if \u0027vifs\u0027 not in self.migrate_data:"},{"line_number":332,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":333,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":334,"context_line":"                # skeleton to be updated after port binding."},{"line_number":335,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_7943e06d","line":334,"range":{"start_line":332,"start_character":0,"end_line":334,"end_character":60},"in_reply_to":"9fdfeff1_e3be43d3","updated":"2019-02-19 17:40:09.000000000","message":"a pre rocky compute node does not send vif objects.\n\nthat said the previous check for multiple port binding mean the migration data will always have vifs if we get here.\n\nsince we only support n-1 we technically shoul not need the\ncode in this if branch.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":333,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":334,"context_line":"                # skeleton to be updated after port binding."},{"line_number":335,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"},{"line_number":338,"context_line":"            bindings \u003d self._bind_ports_on_destination(destination)"},{"line_number":339,"context_line":"            self._update_migrate_vifs_from_bindings(self.migrate_data.vifs,"},{"line_number":340,"context_line":"                                                    bindings)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_94b8cbe5","line":337,"range":{"start_line":335,"start_character":17,"end_line":337,"end_character":53},"updated":"2019-02-19 17:40:09.000000000","message":"this should be done after binding the ports.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":333,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":334,"context_line":"                # skeleton to be updated after port binding."},{"line_number":335,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"},{"line_number":338,"context_line":"            bindings \u003d self._bind_ports_on_destination(destination)"},{"line_number":339,"context_line":"            self._update_migrate_vifs_from_bindings(self.migrate_data.vifs,"},{"line_number":340,"context_line":"                                                    bindings)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_e0670251","line":337,"range":{"start_line":335,"start_character":17,"end_line":337,"end_character":53},"in_reply_to":"9fdfeff1_94b8cbe5","updated":"2019-02-20 15:14:11.000000000","message":"can you elaborate why the order matters here ?\n\nin case of failure to bind an exception is raised and the entire thing blows up. Also binding does not modify instance attributes.","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10cc976212786fa0363838caf80fb300dc36e2eb","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"},{"line_number":338,"context_line":"            bindings \u003d self._bind_ports_on_destination(destination)"},{"line_number":339,"context_line":"            self._update_migrate_vifs_from_bindings(self.migrate_data.vifs,"},{"line_number":340,"context_line":"                                                    bindings)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def _bind_ports_on_destination(self, destination):"},{"line_number":343,"context_line":"        LOG.debug(\u0027Start binding ports on destination host: %s\u0027, destination,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_945c4bee","line":340,"range":{"start_line":339,"start_character":2,"end_line":340,"end_character":61},"updated":"2019-02-19 17:40:09.000000000","message":"so this should be \nself._check_can_migrate_pci(self.source, destination)\nself._update_migrate_vifs_from_bindings(self.migrate_data.vifs,\n                                                    bindings)","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":337,"context_line":"                    self.instance.get_network_info())"},{"line_number":338,"context_line":"            bindings \u003d self._bind_ports_on_destination(destination)"},{"line_number":339,"context_line":"            self._update_migrate_vifs_from_bindings(self.migrate_data.vifs,"},{"line_number":340,"context_line":"                                                    bindings)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def _bind_ports_on_destination(self, destination):"},{"line_number":343,"context_line":"        LOG.debug(\u0027Start binding ports on destination host: %s\u0027, destination,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_63f31c75","line":340,"range":{"start_line":339,"start_character":2,"end_line":340,"end_character":61},"in_reply_to":"9fdfeff1_945c4bee","updated":"2019-02-20 15:14:11.000000000","message":"see comment in L315","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                         if \u0027profile_json\u0027 in mig_vif]"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"            ports_profile \u003d None"},{"line_number":360,"context_line":"            if len(migrate_vifs_with_profile):"},{"line_number":361,"context_line":"                # Update to the port profile is required"},{"line_number":362,"context_line":"                ports_profile \u003d {mig_vif.port_id: mig_vif.profile"},{"line_number":363,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_e3916348","line":360,"range":{"start_line":360,"start_character":15,"end_line":360,"end_character":19},"updated":"2019-02-19 16:15:01.000000000","message":"nit: Is this necessary?","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                         if \u0027profile_json\u0027 in mig_vif]"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"            ports_profile \u003d None"},{"line_number":360,"context_line":"            if len(migrate_vifs_with_profile):"},{"line_number":361,"context_line":"                # Update to the port profile is required"},{"line_number":362,"context_line":"                ports_profile \u003d {mig_vif.port_id: mig_vif.profile"},{"line_number":363,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_c0a0be94","line":360,"range":{"start_line":360,"start_character":15,"end_line":360,"end_character":19},"in_reply_to":"9fdfeff1_e3916348","updated":"2019-02-20 15:14:11.000000000","message":"Done","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                # allow only VIF related PCI requests in live migration."},{"line_number":214,"context_line":"                # PCI requests come from two sources: instance flavor and"},{"line_number":215,"context_line":"                # SR-IOV ports."},{"line_number":216,"context_line":"                # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":217,"context_line":"                # TODO(adrianc): add an is_sriov_port property to PCIRequest"},{"line_number":218,"context_line":"                # to make this cryptic check clearer (also in resource_tracker)"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_3811a054","line":216,"range":{"start_line":216,"start_character":16,"end_line":216,"end_character":68},"updated":"2019-04-03 15:58:01.000000000","message":"ugh. this kind of embedded tribal knowledge is just terrible and is an example of why the PCI module is so hard to work with :(","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"710b35732837157d8e73f4e4fcd16c931d828184","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                # allow only VIF related PCI requests in live migration."},{"line_number":214,"context_line":"                # PCI requests come from two sources: instance flavor and"},{"line_number":215,"context_line":"                # SR-IOV ports."},{"line_number":216,"context_line":"                # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":217,"context_line":"                # TODO(adrianc): add an is_sriov_port property to PCIRequest"},{"line_number":218,"context_line":"                # to make this cryptic check clearer (also in resource_tracker)"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_de6dcd99","line":216,"range":{"start_line":216,"start_character":16,"end_line":216,"end_character":68},"in_reply_to":"5fc1f717_3811a054","updated":"2019-04-04 11:40:53.000000000","message":"i didnt think that partaclar bit was tribal\nthe alsiase are only used for flavor based pci passthough\n\nthey were never intended to work with neutorn sriov interfaces.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"07d3b555b6daa757890477db74e447e3eec071ee","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                # allow only VIF related PCI requests in live migration."},{"line_number":214,"context_line":"                # PCI requests come from two sources: instance flavor and"},{"line_number":215,"context_line":"                # SR-IOV ports."},{"line_number":216,"context_line":"                # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":217,"context_line":"                # TODO(adrianc): add an is_sriov_port property to PCIRequest"},{"line_number":218,"context_line":"                # to make this cryptic check clearer (also in resource_tracker)"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_5e331d14","line":216,"range":{"start_line":216,"start_character":16,"end_line":216,"end_character":68},"in_reply_to":"5fc1f717_de6dcd99","updated":"2019-04-04 12:06:09.000000000","message":"What you just said is tribal knowledge, Sean :) It\u0027s tribal knowledge when a) it\u0027s not documented, b) it\u0027s not obvious and c) only a few people know it.","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f84e385809f3b47065304b4c5359656b41160415","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                # PCI requests come from two sources: instance flavor and"},{"line_number":215,"context_line":"                # SR-IOV ports."},{"line_number":216,"context_line":"                # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":217,"context_line":"                # TODO(adrianc): add an is_sriov_port property to PCIRequest"},{"line_number":218,"context_line":"                # to make this cryptic check clearer (also in resource_tracker)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":221,"context_line":"                    reason\u003d \"non-VIF related PCI requests for instance \""}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_1816244b","line":218,"range":{"start_line":217,"start_character":16,"end_line":218,"end_character":79},"updated":"2019-04-03 15:58:01.000000000","message":"++","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"710b35732837157d8e73f4e4fcd16c931d828184","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                # PCI requests come from two sources: instance flavor and"},{"line_number":215,"context_line":"                # SR-IOV ports."},{"line_number":216,"context_line":"                # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":217,"context_line":"                # TODO(adrianc): add an is_sriov_port property to PCIRequest"},{"line_number":218,"context_line":"                # to make this cryptic check clearer (also in resource_tracker)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"                raise exception.MigrationPreCheckError("},{"line_number":221,"context_line":"                    reason\u003d \"non-VIF related PCI requests for instance \""}],"source_content_type":"text/x-python","patch_set":29,"id":"5fc1f717_1e5cb5eb","line":218,"range":{"start_line":217,"start_character":16,"end_line":218,"end_character":79},"in_reply_to":"5fc1f717_1816244b","updated":"2019-04-04 11:40:53.000000000","message":"we could but again maybe its jsut because i was around when sriov support was first added but this was always something i was aware off.\n\nthat said the pci numa affintiy polices sepc/implemenation was broken because the flavor extra specs and image metadata properies were removed druing code review because peopel assumed the alais was enough so maybe not...","commit_id":"1f1644bf117b466844251e8580453bc9eb70e8de"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":233,"context_line":"                reason\u003d\"Cannot live migrate VIF with related PCI, Neutron \""},{"line_number":234,"context_line":"                       \"does not support required port binding extension.\")"},{"line_number":235,"context_line":"        if not (supports_vif_related_pci_allocations(self.context,"},{"line_number":236,"context_line":"                                                     src_host) and"},{"line_number":237,"context_line":"                supports_vif_related_pci_allocations(self.context,"},{"line_number":238,"context_line":"                                                     dest_host)):"}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_540a188a","line":235,"updated":"2019-04-25 14:01:06.000000000","message":"style nit: newline before this","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f772e2bd948ed3d46a56a64b43bcad67c4b2183d","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":233,"context_line":"                reason\u003d\"Cannot live migrate VIF with related PCI, Neutron \""},{"line_number":234,"context_line":"                       \"does not support required port binding extension.\")"},{"line_number":235,"context_line":"        if not (supports_vif_related_pci_allocations(self.context,"},{"line_number":236,"context_line":"                                                     src_host) and"},{"line_number":237,"context_line":"                supports_vif_related_pci_allocations(self.context,"},{"line_number":238,"context_line":"                                                     dest_host)):"}],"source_content_type":"text/x-python","patch_set":35,"id":"dfbec78f_d7955a34","line":235,"in_reply_to":"ffb9cba7_540a188a","updated":"2019-05-14 14:20:19.000000000","message":"will be dealt with in a FUP","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":341,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":342,"context_line":"                # skeleton to be updated after port binding."},{"line_number":343,"context_line":"                # TODO(adrianc): This can be removed once we move to T release"},{"line_number":344,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":345,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":346,"context_line":"                    self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_3415249d","line":343,"range":{"start_line":343,"start_character":69,"end_line":343,"end_character":78},"updated":"2019-04-25 14:01:06.000000000","message":"U release","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f772e2bd948ed3d46a56a64b43bcad67c4b2183d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                # migrate data vifs were not constructed in dest compute"},{"line_number":341,"context_line":"                # during check_can_live_migrate_destination, construct a"},{"line_number":342,"context_line":"                # skeleton to be updated after port binding."},{"line_number":343,"context_line":"                # TODO(adrianc): This can be removed once we move to T release"},{"line_number":344,"context_line":"                self.migrate_data.vifs \u003d migrate_data_obj.LiveMigrateData.\\"},{"line_number":345,"context_line":"                    create_skeleton_migrate_vifs("},{"line_number":346,"context_line":"                    self.instance.get_network_info())"}],"source_content_type":"text/x-python","patch_set":35,"id":"dfbec78f_7796ee40","line":343,"range":{"start_line":343,"start_character":69,"end_line":343,"end_character":78},"in_reply_to":"ffb9cba7_3415249d","updated":"2019-05-14 14:20:19.000000000","message":"same as above :)","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        # that was bound. This information is then stuffed into the"},{"line_number":357,"context_line":"        # migrate_data."},{"line_number":358,"context_line":"        try:"},{"line_number":359,"context_line":"            # Note(adrianc): migrate_data.vifs was partially filled"},{"line_number":360,"context_line":"            # by destination compute if compute is new enough."},{"line_number":361,"context_line":"            # if that is the case, it may have updated the required port"},{"line_number":362,"context_line":"            # profile for the destination node (e.g new PCI address if SR-IOV)"}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_141260b2","line":359,"range":{"start_line":359,"start_character":14,"end_line":359,"end_character":18},"updated":"2019-04-25 14:01:06.000000000","message":"NOTE? (Surprised hacking doesn\u0027t pull you on this)","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f772e2bd948ed3d46a56a64b43bcad67c4b2183d","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        # that was bound. This information is then stuffed into the"},{"line_number":357,"context_line":"        # migrate_data."},{"line_number":358,"context_line":"        try:"},{"line_number":359,"context_line":"            # Note(adrianc): migrate_data.vifs was partially filled"},{"line_number":360,"context_line":"            # by destination compute if compute is new enough."},{"line_number":361,"context_line":"            # if that is the case, it may have updated the required port"},{"line_number":362,"context_line":"            # profile for the destination node (e.g new PCI address if SR-IOV)"}],"source_content_type":"text/x-python","patch_set":35,"id":"dfbec78f_37a4f6a5","line":359,"range":{"start_line":359,"start_character":14,"end_line":359,"end_character":18},"in_reply_to":"ffb9cba7_141260b2","updated":"2019-05-14 14:20:19.000000000","message":"same as above :)","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":375,"context_line":"                self.context, self.instance, destination, None, ports_profile)"},{"line_number":376,"context_line":"        except exception.PortBindingFailed as e:"},{"line_number":377,"context_line":"            # Port binding failed for that host, try another one."},{"line_number":378,"context_line":"            raise exception.MigrationPreCheckError("}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_547d38e5","line":375,"range":{"start_line":375,"start_character":16,"end_line":375,"end_character":78},"updated":"2019-04-25 14:01:06.000000000","message":"this should really use kwargs, given the amount of arguments here now","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f772e2bd948ed3d46a56a64b43bcad67c4b2183d","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":375,"context_line":"                self.context, self.instance, destination, None, ports_profile)"},{"line_number":376,"context_line":"        except exception.PortBindingFailed as e:"},{"line_number":377,"context_line":"            # Port binding failed for that host, try another one."},{"line_number":378,"context_line":"            raise exception.MigrationPreCheckError("}],"source_content_type":"text/x-python","patch_set":35,"id":"dfbec78f_57caca4d","line":375,"range":{"start_line":375,"start_character":16,"end_line":375,"end_character":78},"in_reply_to":"ffb9cba7_547d38e5","updated":"2019-05-14 14:20:19.000000000","message":"same as above","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":3220,"context_line":"            vnic_type \u003d p.get(\u0027binding:vnic_type\u0027)"},{"line_number":3221,"context_line":"            if (vnic_type in network_model.VNIC_TYPES_SRIOV"},{"line_number":3222,"context_line":"                    and migration is not None"},{"line_number":3223,"context_line":"                    and migration[\u0027migration_type\u0027] !\u003d \u0027live-migration\u0027):"},{"line_number":3224,"context_line":"                # Note(adrianc): for live migration binding profile was already"},{"line_number":3225,"context_line":"                # updated in conductor when calling bind_ports_to_host()"},{"line_number":3226,"context_line":"                if not pci_mapping:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_fa0aeb76","line":3223,"range":{"start_line":3223,"start_character":55,"end_line":3223,"end_character":71},"updated":"2019-02-12 17:32:38.000000000","message":"We should probably define this as a constant somewhere. I see LIVE_MIGRATION in nova/compute/instance_actions.py but that\u0027s something different","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5a8d908b517e08a24537c70894851d8cc9c61b79","unresolved":false,"context_lines":[{"line_number":3220,"context_line":"            vnic_type \u003d p.get(\u0027binding:vnic_type\u0027)"},{"line_number":3221,"context_line":"            if (vnic_type in network_model.VNIC_TYPES_SRIOV"},{"line_number":3222,"context_line":"                    and migration is not None"},{"line_number":3223,"context_line":"                    and migration[\u0027migration_type\u0027] !\u003d \u0027live-migration\u0027):"},{"line_number":3224,"context_line":"                # Note(adrianc): for live migration binding profile was already"},{"line_number":3225,"context_line":"                # updated in conductor when calling bind_ports_to_host()"},{"line_number":3226,"context_line":"                if not pci_mapping:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_4eb322ea","line":3223,"range":{"start_line":3223,"start_character":55,"end_line":3223,"end_character":71},"in_reply_to":"9fdfeff1_fa0aeb76","updated":"2019-02-13 17:25:03.000000000","message":"Done","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"}],"nova/objects/migrate_data.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                 VIFs"},{"line_number":158,"context_line":"        Note:"},{"line_number":159,"context_line":"        \"\"\""},{"line_number":160,"context_line":"        vif_mig_data_lst \u003d []"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        for vif in vifs:"},{"line_number":163,"context_line":"            mig_vif \u003d VIFMigrateData("}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_99ec482a","line":160,"range":{"start_line":160,"start_character":20,"end_line":160,"end_character":24},"updated":"2019-01-10 14:38:50.000000000","message":"nit: unnecessary (no need for a Hungarian notation variant here)","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                 VIFs"},{"line_number":158,"context_line":"        Note:"},{"line_number":159,"context_line":"        \"\"\""},{"line_number":160,"context_line":"        vif_mig_data_lst \u003d []"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        for vif in vifs:"},{"line_number":163,"context_line":"            mig_vif \u003d VIFMigrateData("}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_db450672","line":160,"range":{"start_line":160,"start_character":20,"end_line":160,"end_character":24},"in_reply_to":"dfd5e7cf_99ec482a","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"07a30b8a94eceea3c4d7aa560710e376837369aa","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        :param vifs: a list of VIFs"},{"line_number":156,"context_line":"        :return: list of VIFMigrateData object corresponding to the provided"},{"line_number":157,"context_line":"                 VIFs"},{"line_number":158,"context_line":"        Note:"},{"line_number":159,"context_line":"        \"\"\""},{"line_number":160,"context_line":"        vif_mig_data \u003d []"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_5a68d71b","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":13},"updated":"2019-02-12 17:32:38.000000000","message":"?","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5066a715e8431c73f6588df0b242c87da9197511","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        :param vifs: a list of VIFs"},{"line_number":156,"context_line":"        :return: list of VIFMigrateData object corresponding to the provided"},{"line_number":157,"context_line":"                 VIFs"},{"line_number":158,"context_line":"        Note:"},{"line_number":159,"context_line":"        \"\"\""},{"line_number":160,"context_line":"        vif_mig_data \u003d []"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_2425ac09","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":13},"in_reply_to":"9fdfeff1_5a68d71b","updated":"2019-02-13 09:38:08.000000000","message":"no note, ill remove","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        \u0027vifs\u0027: fields.ListOfObjectsField(\u0027VIFMigrateData\u0027),"},{"line_number":121,"context_line":"    }"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @staticmethod"},{"line_number":124,"context_line":"    def create_skeleton_migrate_vifs(vifs):"},{"line_number":125,"context_line":"        \"\"\"Create migrate vifs for live migration."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        :param vifs: a list of VIFs."},{"line_number":128,"context_line":"        :return: list of VIFMigrateData object corresponding to the provided"},{"line_number":129,"context_line":"                 VIFs."},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        vif_mig_data \u003d []"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        for vif in vifs:"},{"line_number":134,"context_line":"            mig_vif \u003d VIFMigrateData("},{"line_number":135,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":136,"context_line":"                source_vif\u003dvif)"},{"line_number":137,"context_line":"            vif_mig_data.append(mig_vif)"},{"line_number":138,"context_line":"        return vif_mig_data"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"@obj_base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_d479282f","line":138,"range":{"start_line":123,"start_character":0,"end_line":138,"end_character":27},"updated":"2019-04-25 14:01:06.000000000","message":"In hindsight, this probably should have been an staticmethod on VIFMigrateData, or we should have added a VIFMigrateDataList object, *or* we could have had it as an attribute of Instance, seeing as it\u0027s always called with \u0027Instance.get_network_info\u0027. This can be a follow up though","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f772e2bd948ed3d46a56a64b43bcad67c4b2183d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        \u0027vifs\u0027: fields.ListOfObjectsField(\u0027VIFMigrateData\u0027),"},{"line_number":121,"context_line":"    }"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @staticmethod"},{"line_number":124,"context_line":"    def create_skeleton_migrate_vifs(vifs):"},{"line_number":125,"context_line":"        \"\"\"Create migrate vifs for live migration."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        :param vifs: a list of VIFs."},{"line_number":128,"context_line":"        :return: list of VIFMigrateData object corresponding to the provided"},{"line_number":129,"context_line":"                 VIFs."},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        vif_mig_data \u003d []"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        for vif in vifs:"},{"line_number":134,"context_line":"            mig_vif \u003d VIFMigrateData("},{"line_number":135,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":136,"context_line":"                source_vif\u003dvif)"},{"line_number":137,"context_line":"            vif_mig_data.append(mig_vif)"},{"line_number":138,"context_line":"        return vif_mig_data"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"@obj_base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":35,"id":"dfbec78f_77810efb","line":138,"range":{"start_line":123,"start_character":0,"end_line":138,"end_character":27},"in_reply_to":"ffb9cba7_d479282f","updated":"2019-05-14 14:20:19.000000000","message":"will be dealt with in a FUP","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8455,"context_line":""},{"line_number":8456,"context_line":"            # Mock needed objects"},{"line_number":8457,"context_line":"            nw_vifs \u003d network_model.NetworkInfo("},{"line_number":8458,"context_line":"                [network_model.VIF("},{"line_number":8459,"context_line":"                    id\u003duuids.port0,"},{"line_number":8460,"context_line":"                    vnic_type\u003d\u0027direct\u0027,"},{"line_number":8461,"context_line":"                    type\u003dnetwork_model.VIF_TYPE_HW_VEB,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_0fcc865f","line":8458,"range":{"start_line":8458,"start_character":16,"end_line":8458,"end_character":17},"updated":"2019-01-10 14:38:50.000000000","message":"style nit: could you drag this up after the bracket on the previous line. Should help you fix the indentation of the second VIF and make this more readable","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8455,"context_line":""},{"line_number":8456,"context_line":"            # Mock needed objects"},{"line_number":8457,"context_line":"            nw_vifs \u003d network_model.NetworkInfo("},{"line_number":8458,"context_line":"                [network_model.VIF("},{"line_number":8459,"context_line":"                    id\u003duuids.port0,"},{"line_number":8460,"context_line":"                    vnic_type\u003d\u0027direct\u0027,"},{"line_number":8461,"context_line":"                    type\u003dnetwork_model.VIF_TYPE_HW_VEB,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_3e30c056","line":8458,"range":{"start_line":8458,"start_character":16,"end_line":8458,"end_character":17},"in_reply_to":"dfd5e7cf_0fcc865f","updated":"2019-01-14 19:36:08.000000000","message":"Thank you for this.","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8459,"context_line":"                    id\u003duuids.port0,"},{"line_number":8460,"context_line":"                    vnic_type\u003d\u0027direct\u0027,"},{"line_number":8461,"context_line":"                    type\u003dnetwork_model.VIF_TYPE_HW_VEB,"},{"line_number":8462,"context_line":"                    profile\u003d{\u0027pci_slot\u0027: \u0027gotham\u0027,"},{"line_number":8463,"context_line":"                             \u0027pci_vendor_info\u0027: \u0027dc:batman\u0027}),"},{"line_number":8464,"context_line":"                    network_model.VIF("},{"line_number":8465,"context_line":"                        id\u003duuids.port1,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_6fdd1213","line":8462,"range":{"start_line":8462,"start_character":41,"end_line":8462,"end_character":49},"updated":"2019-01-10 14:38:50.000000000","message":"could we use somewhat valid values here, again on account of how poorly understood this stuff is","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8459,"context_line":"                    id\u003duuids.port0,"},{"line_number":8460,"context_line":"                    vnic_type\u003d\u0027direct\u0027,"},{"line_number":8461,"context_line":"                    type\u003dnetwork_model.VIF_TYPE_HW_VEB,"},{"line_number":8462,"context_line":"                    profile\u003d{\u0027pci_slot\u0027: \u0027gotham\u0027,"},{"line_number":8463,"context_line":"                             \u0027pci_vendor_info\u0027: \u0027dc:batman\u0027}),"},{"line_number":8464,"context_line":"                    network_model.VIF("},{"line_number":8465,"context_line":"                        id\u003duuids.port1,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_5e4824cb","line":8462,"range":{"start_line":8462,"start_character":41,"end_line":8462,"end_character":49},"in_reply_to":"dfd5e7cf_6fdd1213","updated":"2019-01-14 19:36:08.000000000","message":"will do, unit tests need to document usage so ill try to keep it as close as possible to realistic values.","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8505,"context_line":""},{"line_number":8506,"context_line":"    def test__update_migrate_vifs_profile_with_pci(self):"},{"line_number":8507,"context_line":"        # define two migrate vifs with only one pci to update"},{"line_number":8508,"context_line":"        # make sure method under test updated the correct one"},{"line_number":8509,"context_line":"        nw_vifs \u003d network_model.NetworkInfo("},{"line_number":8510,"context_line":"            [network_model.VIF("},{"line_number":8511,"context_line":"                id\u003duuids.port0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_2f838ace","line":8508,"range":{"start_line":8508,"start_character":8,"end_line":8508,"end_character":61},"updated":"2019-01-10 14:38:50.000000000","message":"I\u0027d move/duplicate this line above the two asserts at the end of this function to explain what you\u0027re trying to achieve","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8505,"context_line":""},{"line_number":8506,"context_line":"    def test__update_migrate_vifs_profile_with_pci(self):"},{"line_number":8507,"context_line":"        # define two migrate vifs with only one pci to update"},{"line_number":8508,"context_line":"        # make sure method under test updated the correct one"},{"line_number":8509,"context_line":"        nw_vifs \u003d network_model.NetworkInfo("},{"line_number":8510,"context_line":"            [network_model.VIF("},{"line_number":8511,"context_line":"                id\u003duuids.port0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_5eaca48b","line":8508,"range":{"start_line":8508,"start_character":8,"end_line":8508,"end_character":61},"in_reply_to":"dfd5e7cf_2f838ace","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":8527,"context_line":"            create_skeleton_migrate_vifs(nw_vifs)"},{"line_number":8528,"context_line":"        self.compute._update_migrate_vifs_profile_with_pci(mig_vifs,"},{"line_number":8529,"context_line":"                                                           port_id_to_pci_dev)"},{"line_number":8530,"context_line":"        # make sure migrate vifs porfile was updated."},{"line_number":8531,"context_line":"        changed_mig_vif \u003d mig_vifs[0]"},{"line_number":8532,"context_line":"        unchanged_mig_vif \u003d mig_vifs[1]"},{"line_number":8533,"context_line":"        self.assertEqual(changed_mig_vif.profile[\u0027pci_slot\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_0f232607","line":8530,"range":{"start_line":8530,"start_character":33,"end_line":8530,"end_character":40},"updated":"2019-01-10 14:38:50.000000000","message":"profile","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":8527,"context_line":"            create_skeleton_migrate_vifs(nw_vifs)"},{"line_number":8528,"context_line":"        self.compute._update_migrate_vifs_profile_with_pci(mig_vifs,"},{"line_number":8529,"context_line":"                                                           port_id_to_pci_dev)"},{"line_number":8530,"context_line":"        # make sure migrate vifs porfile was updated."},{"line_number":8531,"context_line":"        changed_mig_vif \u003d mig_vifs[0]"},{"line_number":8532,"context_line":"        unchanged_mig_vif \u003d mig_vifs[1]"},{"line_number":8533,"context_line":"        self.assertEqual(changed_mig_vif.profile[\u0027pci_slot\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_f95ed2e4","line":8530,"range":{"start_line":8530,"start_character":33,"end_line":8530,"end_character":40},"in_reply_to":"dfd5e7cf_0f232607","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":8491,"context_line":"                profile\u003d{\u0027pci_slot\u0027: \u00270000:04:00.3\u0027,"},{"line_number":8492,"context_line":"                         \u0027pci_vendor_info\u0027: \u002715b3:1018\u0027,"},{"line_number":8493,"context_line":"                         \u0027physical_network\u0027: \u0027default\u0027}),"},{"line_number":8494,"context_line":"                network_model.VIF("},{"line_number":8495,"context_line":"                    id\u003duuids.port1,"},{"line_number":8496,"context_line":"                    vnic_type\u003d\u0027normal\u0027,"},{"line_number":8497,"context_line":"                    type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":8498,"context_line":"                    profile\u003d{\u0027some\u0027: \u0027attribute\u0027})])"},{"line_number":8499,"context_line":"        pci_dev \u003d objects.PciDevice(request_id\u003duuids.pci_req,"},{"line_number":8500,"context_line":"                                    address\u003d\u00270000:05:00.4\u0027,"},{"line_number":8501,"context_line":"                                    vendor_id\u003d\u002715b3\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_4325cf09","line":8498,"range":{"start_line":8494,"start_character":0,"end_line":8498,"end_character":52},"updated":"2019-02-19 16:15:01.000000000","message":"nit: identation is all whacky. This block should be dedented by a tab","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":8491,"context_line":"                profile\u003d{\u0027pci_slot\u0027: \u00270000:04:00.3\u0027,"},{"line_number":8492,"context_line":"                         \u0027pci_vendor_info\u0027: \u002715b3:1018\u0027,"},{"line_number":8493,"context_line":"                         \u0027physical_network\u0027: \u0027default\u0027}),"},{"line_number":8494,"context_line":"                network_model.VIF("},{"line_number":8495,"context_line":"                    id\u003duuids.port1,"},{"line_number":8496,"context_line":"                    vnic_type\u003d\u0027normal\u0027,"},{"line_number":8497,"context_line":"                    type\u003dnetwork_model.VIF_TYPE_OVS,"},{"line_number":8498,"context_line":"                    profile\u003d{\u0027some\u0027: \u0027attribute\u0027})])"},{"line_number":8499,"context_line":"        pci_dev \u003d objects.PciDevice(request_id\u003duuids.pci_req,"},{"line_number":8500,"context_line":"                                    address\u003d\u00270000:05:00.4\u0027,"},{"line_number":8501,"context_line":"                                    vendor_id\u003d\u002715b3\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_66024a0c","line":8498,"range":{"start_line":8494,"start_character":0,"end_line":8498,"end_character":52},"in_reply_to":"9fdfeff1_4325cf09","updated":"2019-02-20 15:14:11.000000000","message":"Done","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"716f94c048533a6c60fd28b608ab8a8355a560d5","unresolved":false,"context_lines":[{"line_number":8644,"context_line":"        def _test(mock_get_network_info,"},{"line_number":8645,"context_line":"                  mock_get_instance_pci_request_from_vif,"},{"line_number":8646,"context_line":"                  rt_mock):"},{"line_number":8647,"context_line":"            # when no VIFS, expecting no pci devices to be claimed"},{"line_number":8648,"context_line":"            mock_get_network_info.return_value \u003d []"},{"line_number":8649,"context_line":"            port_id_to_pci \u003d self.compute._claim_pci_for_instance_vifs("},{"line_number":8650,"context_line":"                self.context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"ffb9cba7_14eee087","line":8647,"updated":"2019-04-25 14:01:06.000000000","message":"Stiiilll wish these were separate tests, but I get why you\u0027re averse to this","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f772e2bd948ed3d46a56a64b43bcad67c4b2183d","unresolved":false,"context_lines":[{"line_number":8644,"context_line":"        def _test(mock_get_network_info,"},{"line_number":8645,"context_line":"                  mock_get_instance_pci_request_from_vif,"},{"line_number":8646,"context_line":"                  rt_mock):"},{"line_number":8647,"context_line":"            # when no VIFS, expecting no pci devices to be claimed"},{"line_number":8648,"context_line":"            mock_get_network_info.return_value \u003d []"},{"line_number":8649,"context_line":"            port_id_to_pci \u003d self.compute._claim_pci_for_instance_vifs("},{"line_number":8650,"context_line":"                self.context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"dfbec78f_1799b277","line":8647,"in_reply_to":"ffb9cba7_14eee087","updated":"2019-05-14 14:20:19.000000000","message":"will be dealt with in a FUP","commit_id":"fd8fdc934530fb49497bc6deaa72adfa51c8783a"}],"nova/tests/unit/conductor/tasks/test_live_migrate.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def test_check_can_migrate_pci(self):"},{"line_number":652,"context_line":"        \"\"\"Tests that _check_can_migrate_pci() allows live-migration if"},{"line_number":653,"context_line":"        instance does not contain non network related PCI requests and"},{"line_number":654,"context_line":"        raises MigrationPreCheckError otherwise"},{"line_number":655,"context_line":"        \"\"\""},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_ef6ca237","line":653,"range":{"start_line":653,"start_character":34,"end_line":653,"end_character":45},"updated":"2019-01-10 14:38:50.000000000","message":"non-network","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def test_check_can_migrate_pci(self):"},{"line_number":652,"context_line":"        \"\"\"Tests that _check_can_migrate_pci() allows live-migration if"},{"line_number":653,"context_line":"        instance does not contain non network related PCI requests and"},{"line_number":654,"context_line":"        raises MigrationPreCheckError otherwise"},{"line_number":655,"context_line":"        \"\"\""},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_9e976c91","line":653,"range":{"start_line":653,"start_character":34,"end_line":653,"end_character":45},"in_reply_to":"dfd5e7cf_ef6ca237","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            if instance_pci_reqs:"},{"line_number":675,"context_line":"                self.assertTrue(mock_supp_vif_related_pci_alloc.called)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        # instance has no PCI requests"},{"line_number":678,"context_line":"        _test(None, False, False)  # No support in Neutron and Computes"},{"line_number":679,"context_line":"        _test(None, True, False)  # No support in Computes"},{"line_number":680,"context_line":"        _test(None, False, True)  # No support in Neutron"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_6f31920b","line":677,"updated":"2019-01-10 14:38:50.000000000","message":"I feel like these should be separate functions, but I\u0027m also ok with them as-is","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            if instance_pci_reqs:"},{"line_number":675,"context_line":"                self.assertTrue(mock_supp_vif_related_pci_alloc.called)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        # instance has no PCI requests"},{"line_number":678,"context_line":"        _test(None, False, False)  # No support in Neutron and Computes"},{"line_number":679,"context_line":"        _test(None, True, False)  # No support in Computes"},{"line_number":680,"context_line":"        _test(None, False, True)  # No support in Neutron"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_fe5eb8e4","line":677,"in_reply_to":"dfd5e7cf_6f31920b","updated":"2019-01-14 19:36:08.000000000","message":"usually when its a method that is just performing simple checks, i like to consolidate the various scenarios to avoid overhead for both unittest framework and myself :).","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf35bdd9ce773b4e6d9229a3fa2572d4b31f8e4a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            mock.patch.object(self.task.compute_rpcapi, \u0027live_migration\u0027),"},{"line_number":91,"context_line":"            mock.patch(\u0027nova.conductor.tasks.migrate.\u0027"},{"line_number":92,"context_line":"                       \u0027replace_allocation_with_migration\u0027),"},{"line_number":93,"context_line":"        ) as (mock_check_up, mock_check_dest, mock_claim,"},{"line_number":94,"context_line":"        mock_save, mock_mig, m_alloc):"},{"line_number":95,"context_line":"            mock_mig.return_value \u003d \"bob\""},{"line_number":96,"context_line":"            m_alloc.return_value \u003d (mock.MagicMock(), mock.sentinel.allocs)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_c35f7f73","line":94,"range":{"start_line":93,"start_character":57,"end_line":94,"end_character":38},"updated":"2019-02-19 16:15:01.000000000","message":"unrelated change","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"9441884d77f471bb26a332f4d8a95e264c207344","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            mock.patch.object(self.task.compute_rpcapi, \u0027live_migration\u0027),"},{"line_number":91,"context_line":"            mock.patch(\u0027nova.conductor.tasks.migrate.\u0027"},{"line_number":92,"context_line":"                       \u0027replace_allocation_with_migration\u0027),"},{"line_number":93,"context_line":"        ) as (mock_check_up, mock_check_dest, mock_claim,"},{"line_number":94,"context_line":"        mock_save, mock_mig, m_alloc):"},{"line_number":95,"context_line":"            mock_mig.return_value \u003d \"bob\""},{"line_number":96,"context_line":"            m_alloc.return_value \u003d (mock.MagicMock(), mock.sentinel.allocs)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_464b865e","line":94,"range":{"start_line":93,"start_character":57,"end_line":94,"end_character":38},"in_reply_to":"9fdfeff1_c35f7f73","updated":"2019-02-20 15:14:11.000000000","message":"Done","commit_id":"8cf12f5843ddbc3954ef8c3bc774ecd6eb05a7b7"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ecf516cca26d36bf20abf6794ccae2869946e172","unresolved":false,"context_lines":[{"line_number":4128,"context_line":"                        {\u0027id\u0027: \u0027fake-port-2\u0027,"},{"line_number":4129,"context_line":"                         neutronapi.BINDING_HOST_ID: instance.host}]}"},{"line_number":4130,"context_line":"        migration \u003d {\u0027status\u0027: \u0027confirmed\u0027,"},{"line_number":4131,"context_line":"                     \u0027migration_type\u0027: \"warm-migration\"}"},{"line_number":4132,"context_line":"        list_ports_mock \u003d mock.Mock(return_value\u003dfake_ports)"},{"line_number":4133,"context_line":"        get_client_mock.return_value.list_ports \u003d list_ports_mock"},{"line_number":4134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dfd5e7cf_af2e9aa2","line":4131,"range":{"start_line":4131,"start_character":40,"end_line":4131,"end_character":54},"updated":"2019-01-10 14:38:50.000000000","message":"I\u0027m not crazy. This isn\u0027t a thing, right? If not, could we put in a valid non-live-migration value?","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"d7e6f9f4fa97e27050807ec871322490b76fd48f","unresolved":false,"context_lines":[{"line_number":4128,"context_line":"                        {\u0027id\u0027: \u0027fake-port-2\u0027,"},{"line_number":4129,"context_line":"                         neutronapi.BINDING_HOST_ID: instance.host}]}"},{"line_number":4130,"context_line":"        migration \u003d {\u0027status\u0027: \u0027confirmed\u0027,"},{"line_number":4131,"context_line":"                     \u0027migration_type\u0027: \"warm-migration\"}"},{"line_number":4132,"context_line":"        list_ports_mock \u003d mock.Mock(return_value\u003dfake_ports)"},{"line_number":4133,"context_line":"        get_client_mock.return_value.list_ports \u003d list_ports_mock"},{"line_number":4134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_7eb5e830","line":4131,"range":{"start_line":4131,"start_character":40,"end_line":4131,"end_character":54},"in_reply_to":"dfd5e7cf_af2e9aa2","updated":"2019-01-14 19:36:08.000000000","message":"Done","commit_id":"e27c9c6eb25ced5403c2f9f203c9d5b84b865ddd"}],"releasenotes/notes/live-migration-with-PCI-device-b96bdad273fa1d2b.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e805ffd6439ed4692b9142b9786376f0bac7fa5e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Live migration of an instance with PCI devices is now blocked"},{"line_number":5,"context_line":"    in the following scenarios:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"        1. Instance with non-network related PCI device."},{"line_number":8,"context_line":"        2. Instance with network related PCI device and either:"},{"line_number":9,"context_line":"            a. Neutron does not support extended port binding API."},{"line_number":10,"context_line":"            b. Source or destination compute node does not support"},{"line_number":11,"context_line":"               libvirt-sriov-live-migration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Live migration will fail with a user friendly error."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":21,"id":"9fdfeff1_7aa83b1f","line":11,"range":{"start_line":7,"start_character":0,"end_line":11,"end_character":44},"updated":"2019-02-12 17:35:25.000000000","message":"You need to dedent this or it won\u0027t render correctly.\n\n  in the following scenarios:\n\n  1. Instance with non-network ...\n  2. Instance with network ...\n     a. Neutron ...\n     b. Source or ....\n\nYou can test at http://rst.ninjs.org/","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"5a8d908b517e08a24537c70894851d8cc9c61b79","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Live migration of an instance with PCI devices is now blocked"},{"line_number":5,"context_line":"    in the following scenarios:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"        1. Instance with non-network related PCI device."},{"line_number":8,"context_line":"        2. Instance with network related PCI device and either:"},{"line_number":9,"context_line":"            a. Neutron does not support extended port binding API."},{"line_number":10,"context_line":"            b. Source or destination compute node does not support"},{"line_number":11,"context_line":"               libvirt-sriov-live-migration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Live migration will fail with a user friendly error."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":21,"id":"9fdfeff1_0e019a38","line":11,"range":{"start_line":7,"start_character":0,"end_line":11,"end_character":44},"in_reply_to":"9fdfeff1_7aa83b1f","updated":"2019-02-13 17:25:03.000000000","message":"Done","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e805ffd6439ed4692b9142b9786376f0bac7fa5e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Live migration of an instance with PCI devices is now blocked"},{"line_number":5,"context_line":"    in the following scenarios:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"        1. Instance with non-network related PCI device."},{"line_number":8,"context_line":"        2. Instance with network related PCI device and either:"},{"line_number":9,"context_line":"            a. Neutron does not support extended port binding API."},{"line_number":10,"context_line":"            b. Source or destination compute node does not support"},{"line_number":11,"context_line":"               libvirt-sriov-live-migration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Live migration will fail with a user friendly error."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    .. note:: Previously, the operation would have failed with an obscure error."},{"line_number":16,"context_line":"        Ending up with the instance still running on the source node or ending up"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"9fdfeff1_fab42b84","line":13,"range":{"start_line":4,"start_character":0,"end_line":13,"end_character":56},"updated":"2019-02-12 17:35:25.000000000","message":"Shouldn\u0027t you call out the fact that live migration with SR-IOV devices is now unblocked?","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3750c3c17e4e24c7080877e49f68045ff817b402","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Live migration of an instance with PCI devices is now blocked"},{"line_number":5,"context_line":"    in the following scenarios:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"        1. Instance with non-network related PCI device."},{"line_number":8,"context_line":"        2. Instance with network related PCI device and either:"},{"line_number":9,"context_line":"            a. Neutron does not support extended port binding API."},{"line_number":10,"context_line":"            b. Source or destination compute node does not support"},{"line_number":11,"context_line":"               libvirt-sriov-live-migration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Live migration will fail with a user friendly error."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    .. note:: Previously, the operation would have failed with an obscure error."},{"line_number":16,"context_line":"        Ending up with the instance still running on the source node or ending up"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"9fdfeff1_457c7c82","line":13,"range":{"start_line":4,"start_character":0,"end_line":13,"end_character":56},"in_reply_to":"9fdfeff1_fab42b84","updated":"2019-02-12 17:43:33.000000000","message":"I see that\u0027s added in the follow-up. Never mind.","commit_id":"3c9073f39dd5f7af3c3701ebcbaa3a652844d3fb"}]}
