)]}'
{"id":"openstack%2Fnova~1000963","triplet_id":"openstack%2Fnova~master~I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9","project":"openstack/nova","branch":"master","topic":"bug/2163417","attention_set":{"33607":{"account":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"last_update":"2026-08-18 07:39:07.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9","subject":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration","status":"NEW","created":"2026-08-14 12:09:43.000000000","updated":"2026-08-18 07:39:07.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"4c97b9ad971cede64b93bc910ef19ea913517d64","_number":1000963,"virtual_id_number":1000963,"owner":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-08-17 16:05:34.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-14 12:11:43.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-08-14 13:05:17.000000000","updated_by":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-08-14 14:10:44.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-08-14 14:10:54.000000000","updated_by":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"reviewer":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"state":"CC"}],"messages":[{"id":"abf2b89175959a336139e6efe1c7145a023ee630","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"date":"2026-08-14 12:09:43.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4c691d48a65d2537734a7e3b8fce5e3569e3a82e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-14 12:11:43.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fa56c5b52eec46b9afe7cbb5982fb4d6\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/b66aa2b5c9a140f2b1b3f74e80e0ae6e : NODE_FAILURE Node(set) request 40a538e4d99c4c26a05999a1bb29c3fb failed in 0s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/3652cb3c65e54560bc6cbaa451e3b63c : NODE_FAILURE Node(set) request 65d0a9c26d1241b3a659591f2b73eaa7 failed in 0s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/3c1be00768b1465e8d577e6dae436dea : NODE_FAILURE Node(set) request 8e240dc2afd5456aa49ca28cbe3048c6 failed in 0s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"3abe395263a22369f0060bd90dd2a0fa2ea2ea56","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-08-14 13:05:17.000000000","message":"Patch Set 1:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9 .","accounts_in_message":[],"_revision_number":1},{"id":"6699293b54a2df8eb63193ba22d99b754c033685","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-14 14:10:44.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/71b4510525f948dfae37be786f82e3ce\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f522a72a8b654a409bc06ccc2cc464b1 : SUCCESS in 1h 05m 27s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/1133754e614c43699ef659af62e1a88e : SUCCESS in 1h 49m 45s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/9eb8d2055bb34d9e9c4c5f894ec80598 : SUCCESS in 46m 36s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/7f5a4d0407a44e6c884f110bd14ab553 : SUCCESS in 1h 15m 23s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e7e4b23be5824cc98e96310941aa9a04 : SUCCESS in 9m 55s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/e378f9ccc14e4e1d8e1a3ade2ef85ee9 : SUCCESS in 13m 49s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a9db6768ef5e40a1abc690817cb18d09 : SUCCESS in 13m 13s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/e10356b307454199a141083d3e2235a4 : SUCCESS in 14m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8cdf6756334a420e8e1d64c4d858ed08 : SUCCESS in 12m 26s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f95a998245754be894ed00f65400bf05 : SUCCESS in 10m 02s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/af1a513eda914d44886ac559904bb675 : SUCCESS in 44m 08s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/daf219f836d1494c9975270b3d28f997 : SUCCESS in 1h 31m 42s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/6d5ecc2c5876419595c4e58c1e504ff1 : SUCCESS in 49m 24s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/e8aa26bee24348d3beb4811a86168bb1 : SUCCESS in 35m 18s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/869eb76e338044b59ebef606f36d3747 : SUCCESS in 1h 01m 23s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/e2919c7ad293480aaf2e3223ab1e59bd : SUCCESS in 52m 07s\n- nova-lvm https://zuul.opendev.org/t/openstack/build/e2e705113c1f4b149b0982b549c24b07 : SUCCESS in 1h 09m 46s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/b36829db65e64f6d89179e28a655365d : SUCCESS in 1h 54m 48s\n- nova-next https://zuul.opendev.org/t/openstack/build/a2c713d5f51047a0ac514a35c78d48e3 : SUCCESS in 59m 14s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/f5433f9fb557473292d0c25ed1cfd613 : SUCCESS in 28m 54s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/e33ffaef7f604fe88b5ac74e29a2aa37 : SUCCESS in 5m 04s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/a663640835cc41df9603f4676dbb9ebd : SUCCESS in 27m 11s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/2bdb4397699f4f6395e540c292c90473 : SUCCESS in 24m 12s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/77d8f305ecaa47809df331f721e7eb52 : SUCCESS in 33m 39s (non-voting)\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/133758d2dea645f89e9933b3bc106020 : SUCCESS in 1h 21m 48s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/210772743c3344a7821a38624529912b : SUCCESS in 54m 23s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/ffd79f5d7af0426a84880a693c3d7cf7 : SUCCESS in 41m 35s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/d8fbe817063d4e36a6e1ef2fe6a7b634 : SUCCESS in 21m 13s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/f242f8d7bc42468d9c242386f4c67ee7 : SUCCESS in 10m 34s","accounts_in_message":[],"_revision_number":1},{"id":"36cd512a3de2f0727329ba5452396d3a0b8f93e0","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"date":"2026-08-14 14:21:17.000000000","message":"Patch Set 1:\n\nBuild succeeded. log path: ${LOG_PATH}\nLeave a comment with","accounts_in_message":[],"_revision_number":1},{"id":"842e2438c9827766df169048c795ef869b5dd377","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"date":"2026-08-14 15:49:47.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"efd793e827c18a086939cf2e8e9ce0492ae163ce","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-14 15:51:48.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/406dd0db11974c7790e870ab721d0184\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/da3be085ae05433488fc13f6185af431 : NODE_FAILURE Node(set) request 92ed8671031945088e0fe8d5e05add93 failed in 0s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/af8e282bf25d42028b162af4804451c9 : NODE_FAILURE Node(set) request ba90587a351c462893a85d19fb1ebd96 failed in 0s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/89676ba63236473fa7301134c149506e : NODE_FAILURE Node(set) request 638b6511001641f5ba7a3cb644bf3c3c failed in 0s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"ad8f51ee82b6b5ea6b342477d4ba88f3ce20401c","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-08-14 16:57:41.000000000","message":"Patch Set 2:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9 .","accounts_in_message":[],"_revision_number":2},{"id":"9bc936230cc926c7d080b1b875045a6095efa86b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-14 17:51:55.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/13cb059fe88646a7ab448510f6291653\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/9e70e77332544a46872eedd584d1c6a9 : SUCCESS in 1h 05m 49s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/ab9363d8ea284391a7db5a2ed2155711 : SUCCESS in 1h 04m 02s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/fcbeec2c50ba4b658093ae70563c822a : SUCCESS in 33m 52s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/eeaa284f5d204f069bb92c48f260b16e : SUCCESS in 1h 11m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6fd813c89e114e7b9929a80ff25e0126 : SUCCESS in 6m 03s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/eba0e667d9b14831bb78551806249080 : SUCCESS in 14m 22s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/37e1165cbf764229ac927ee68c6d393c : SUCCESS in 13m 43s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b22583503fd7426e98a978fd91a7f603 : SUCCESS in 18m 51s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9641115b530a4b6599199de0728b5c5f : SUCCESS in 11m 57s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/71997a63eaa24e4cb158d86aab1a1cca : SUCCESS in 5m 45s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/737d9b7685254bd78d94dab540ca2330 : SUCCESS in 39m 36s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/641b39cc9fcf41838da3826a62417e4e : SUCCESS in 1h 19m 14s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/ec7fb1edac644d13a2b92aa447fc61c5 : SUCCESS in 47m 38s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/6541f09a6adc4d5e8bf6b0d5843f88d3 : SUCCESS in 36m 10s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/d1323473c38d41198aa8e5d99907d81d : SUCCESS in 1h 03m 12s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/7fec5c7394564380854f2e6cff1ec731 : SUCCESS in 49m 40s\n- nova-lvm https://zuul.opendev.org/t/openstack/build/136756053dbd4096b91a0b6d60aff8b9 : SUCCESS in 1h 01m 25s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/66337a8330bd4d0fbc8f1cea874196f6 : SUCCESS in 1h 12m 29s\n- nova-next https://zuul.opendev.org/t/openstack/build/5c0e1ace960641b7be03431cde3e1c25 : SUCCESS in 1h 46m 43s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/abc9c71d7e4a4ad08eadcc206d90f327 : SUCCESS in 46m 37s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/b0a166906eab4ad99970ff69a045ff43 : SUCCESS in 3m 24s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/09def7addcd94ae7a630d7d7e7c17f68 : SUCCESS in 24m 40s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/a48aa76093804a5ab811db3b8a049ff1 : SUCCESS in 21m 44s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/3eac69db685a4d279639fd78e20405bd : SUCCESS in 30m 55s (non-voting)\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/3d86e68044014176bca049c4398e9b6e : FAILURE in 57m 41s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/c0fd31f2964b499c97fb2ee09208a21f : SUCCESS in 32m 09s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/ec533afe6ec74cefb33439efb71345d1 : SUCCESS in 36m 42s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/d37cfd23ce68482999c1aa5580cf2d76 : SUCCESS in 20m 38s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/e6b96bb022514d5f95adbd299ca36b19 : SUCCESS in 13m 02s","accounts_in_message":[],"_revision_number":2},{"id":"caddd906324d7422e1931363961a96661f86006d","author":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"date":"2026-08-15 05:44:51.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"53ce31faab5f200a24baef3d9cd37f21ae57f507","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-15 05:56:15.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6d9323e35896452398627e586c6d5267\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/798d3105fa9544289916a2f2997f3a53 : FAILURE in 7m 12s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/68c6cb516b804eb59ecc94074f091e6e : FAILURE in 6m 59s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/7f61e7171b6d40929f44ab0d2252c882 : FAILURE in 9m 16s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"e2ef1b576bda16c26dbfd29dabc6c904dea13ca3","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-15 07:45:02.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a12300f5f1994d7b9cc7d75c47ef0695\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/a8f76907cc3b4d14b1a3fb76106313f7 : SUCCESS in 33m 07s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/5d89c933bb444694b24662b19e66805f : SUCCESS in 51m 09s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/285a5b1aa2a748489263d009d991920d : SUCCESS in 39m 53s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d18f8515321b45d1bd09e2364394fca4 : SUCCESS in 52m 04s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/67ed72cc882b4168a43954fe690286fd : SUCCESS in 5m 16s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/11b34b95c95e477d8d3c932ca2675bf5 : SUCCESS in 8m 28s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a3d0afb63d194848a737bdccad026290 : SUCCESS in 9m 25s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/0e3469b21fc8441ab8df4cc9fa8f10da : SUCCESS in 13m 26s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/582128d856ef40a4b6d2f95b45fc7676 : SUCCESS in 7m 29s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d5e4ad51c5f14e98833f053ee6c8b2ff : SUCCESS in 6m 58s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/c4fefb9121484eb2a7feee3f7076139e : SUCCESS in 40m 44s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/7788b8478a6b4248837b9112ce0d77f9 : SUCCESS in 1h 47m 41s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/14840ec40133425e99e59d8af0554a07 : SUCCESS in 49m 46s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/4d898381b8e84b64b3bf14d3aa162cf1 : SUCCESS in 37m 33s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/243ebb2a8f3e409c984cedf1ca085c2a : SUCCESS in 59m 47s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/bdcc22f5aa854928a536c2a29631d8cf : SUCCESS in 35m 00s\n- nova-lvm https://zuul.opendev.org/t/openstack/build/8e0fe650182d4e24adaedf4d350b4cd1 : SUCCESS in 46m 22s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/910811d3d0e344d2b6232e55d4b728f2 : SUCCESS in 1h 54m 07s\n- nova-next https://zuul.opendev.org/t/openstack/build/61706ae39fde4776b60cf68b9517a937 : SUCCESS in 1h 47m 05s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/0c47c7643f334c178e4807217da317be : SUCCESS in 45m 39s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/10627651ae37421cb3ff9f9017636e94 : SUCCESS in 5m 15s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/8c19cde0eafc4fedae9ceecead808d92 : SUCCESS in 28m 08s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/9391dfa310434ff98cb2e20205d04c2a : SUCCESS in 27m 40s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/a66acfae685f47978b031a5d54091915 : SUCCESS in 28m 48s (non-voting)\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/2fdd04c61caa43d78188863e85475dd2 : SUCCESS in 52m 02s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/a55ec0723c7041ff82c00d683f42be18 : SUCCESS in 53m 51s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/95155d35c7714c76905eb7c7dc5a29f5 : SUCCESS in 52m 18s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/2e0a86340b8f4c6180753df89a7281cd : SUCCESS in 33m 35s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/de18552f34f1442c8ef0a55c82bb3048 : SUCCESS in 13m 29s","accounts_in_message":[],"_revision_number":2},{"id":"d22903d87e0ed4234cfea3ef5996eafb22256179","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"date":"2026-08-15 07:55:28.000000000","message":"Patch Set 2:\n\nBuild succeeded. log path: ${LOG_PATH}\nLeave a comment with","accounts_in_message":[],"_revision_number":2},{"id":"e419b371932cd33a079b07ec0f52e16c9def7e3a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"date":"2026-08-17 13:40:11.000000000","message":"Uploaded patch set 3: Commit message was updated.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"64bdecdff6fb1f985f3009183553ac6fa39c5223","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-08-17 14:39:04.000000000","message":"Patch Set 3:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9 .","accounts_in_message":[],"_revision_number":3},{"id":"d014b494c9ab7f2c9093d6b7fd0ea03a32ff657b","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-17 14:45:12.000000000","message":"Patch Set 3:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5358df11de5e42c28a30a1286a79a4ed\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/55893ba3906845659d2ff94b695995ee : FAILURE in 4m 50s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/a5748f1d0da947a79c09c4cc60e98aff : SUCCESS in 25m 37s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/3d9a0968ab1f4d778dc60af84d0e5284 : FAILURE in 10m 28s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"5be5b5c8ba7051d30b5861280ddc4fa1ef10c05a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-17 16:05:34.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/2e86ece7b0034c4ca92cdb682f000874\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f0aadffd9ce44f8c9b93c8e0d95c3414 : SUCCESS in 1h 16m 16s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/e4ea7a06ce454b268629b08125c6e881 : SUCCESS in 1h 47m 51s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/64ebd923e9b84f7ab80a1cf25b1a2a13 : SUCCESS in 1h 00m 39s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/fa8fce884e0344efacb5f9008a9bef3d : SUCCESS in 1h 20m 41s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/38b61bc5384e460da2c35b8e4487bf51 : SUCCESS in 9m 02s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1f5f01228f944a29b24b9419710b763f : SUCCESS in 14m 49s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/4eaf2736c0334a7ab75250473aa1c4b1 : SUCCESS in 10m 59s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/e535b21649964a44bb5938d48a899096 : SUCCESS in 21m 11s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2190835c5cba41828e2a6d422c23e599 : SUCCESS in 12m 25s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5a20846198ac41c99dec647cf1fb007a : SUCCESS in 8m 03s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/081c019735b24ef58cc82ebf48a26f7a : SUCCESS in 1h 06m 29s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/6f3ac26059d348afbc599ef2ad4bdc46 : SUCCESS in 1h 20m 12s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/94ebce2e28a94e4ea0dbd506055b499f : SUCCESS in 52m 37s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/5d556ace540646c78bd56ec6d26ed900 : SUCCESS in 34m 17s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/0caeab35ad154c2f8e0e995d0e63f64f : FAILURE in 48m 28s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/0cda39fe7a1c42819015566091fe2fad : SUCCESS in 44m 40s\n- nova-lvm https://zuul.opendev.org/t/openstack/build/e198543b3621446e8bf0e9e14a381176 : SUCCESS in 41m 02s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/0eb16e9de89040d4808ed261b6f7d7c5 : SUCCESS in 1h 41m 46s\n- nova-next https://zuul.opendev.org/t/openstack/build/343950a3f87c4167b9aaeec333f0b79e : SUCCESS in 2h 17m 18s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/11274a9439b742748bf2549ff03a3f8a : SUCCESS in 48m 26s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/f12020ffdab64676a4e2c105418a2f02 : SUCCESS in 5m 36s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/12daf58c4222491fb247aaed8ee396b2 : SUCCESS in 22m 16s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/b0089354ce7b4cf99654f546ee376edf : SUCCESS in 28m 04s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/80c3456102c64770896328216478ea27 : SUCCESS in 33m 32s (non-voting)\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/9f756b54cb8f48c69cae005f68a7a44d : SUCCESS in 1h 28m 47s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/711931cedce84786818c8c2da8cc865d : SUCCESS in 36m 14s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/bd8701eeff724e3b967a922f86ff7973 : SUCCESS in 27m 15s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/e4e9526a3c1649c7bfc515156422b9bd : SUCCESS in 20m 48s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/7885a946404e4f9590f9579574ff936b : SUCCESS in 11m 19s","accounts_in_message":[],"_revision_number":3},{"id":"cd65b28d52661353239136ab3f1967ec578d4aed","author":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"date":"2026-08-18 05:32:52.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"a216b22cfaf81c46b705e5d7213e928befb54304","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 06:12:41.000000000","message":"Patch Set 3:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c7e0b4d16a594fa49873de314cefe530\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/4e568527897a4f4aa0c27bac4202d8d8 : SUCCESS in 15m 34s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/99281c70e3614d3590f7f8d48344a058 : SUCCESS in 26m 30s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/9f0ba4741a9b494d8fb3ae20ffb014a7 : FAILURE in 13m 32s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"4c97b9ad971cede64b93bc910ef19ea913517d64","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 07:39:07.000000000","message":"Patch Set 3:\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/0e9de00d0e984b27b4018ede749dc0c8\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/59ec3a3fdf6b41d296d0bdcf66c3d5df : SUCCESS in 44m 22s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/f03b72878ee64527917b04163dd36239 : SUCCESS in 1h 30m 01s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/62305362c03e4cc297ac6e81afe84a41 : SUCCESS in 40m 39s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d9289cb9d4e74036a35619c30e9b5e56 : SUCCESS in 1h 03m 09s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/33a2d2ad7116449f9429d7b421ec654a : SUCCESS in 6m 27s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/19eaa49984ec4171a3fae8779d8da0f7 : SUCCESS in 9m 28s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/7bcd90676ca540e78bd59a242fc99945 : SUCCESS in 10m 37s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c1f135b9a15742e0a0058a224dab3972 : SUCCESS in 14m 17s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8cff261b80354092ab05a5f4369b4552 : SUCCESS in 12m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f60724361a3f4772bb9ddbcba8fe5ecc : SUCCESS in 8m 54s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/c98f994808ef4620aead19afc6bc377d : SUCCESS in 1h 06m 52s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/991da0f9ae48476f8574573835068c0c : SUCCESS in 1h 23m 39s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/46301b3fd8484657ad7ebcadabce01c5 : SUCCESS in 51m 28s\n- nova-whitebox https://zuul.opendev.org/t/openstack/build/950b84f6b70a495fad2b745e3077fd80 : SUCCESS in 34m 47s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/87c1b21d007344be9b3c8ac5fdebe539 : SUCCESS in 49m 09s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/7b7243ca462d4cf5953325b7f0f60b84 : SUCCESS in 50m 30s\n- nova-lvm https://zuul.opendev.org/t/openstack/build/8f081e53ffa74157aa3fcb6aa7cae5f4 : SUCCESS in 1h 01m 54s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/7ba4f9e0e6c74b3dae7bc3efafde6c60 : FAILURE in 54m 36s\n- nova-next https://zuul.opendev.org/t/openstack/build/fdc30c62295147eb8954c6f1940a249c : SUCCESS in 1h 58m 06s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/0ac5c97adc884e09b6973eb0a2ce0d8f : SUCCESS in 48m 20s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/ba0c03d5b5cb4895a31417022c58cef4 : SUCCESS in 6m 12s (non-voting)\n- nova-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/5c2c68ee042448f192c9eabb4e7088eb : SUCCESS in 27m 10s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/d5628f1eb16b464fbc7def6788067ed3 : SUCCESS in 26m 35s\n- nova-tox-functional-py313-threading https://zuul.opendev.org/t/openstack/build/3762072dc56d4430b549940046f6c1c2 : SUCCESS in 34m 50s (non-voting)\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/dede2c7ec7624c92941c6cffd0d87bcc : SUCCESS in 52m 01s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/788b9813b1cd4894b7cfe78f0f900b80 : SUCCESS in 30m 17s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/350027ea95494e73bfde19f0f451be94 : SUCCESS in 26m 21s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/9567d8e245394cb6b4cd65a2dabe7888 : SUCCESS in 34m 00s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/64f50c09ebe74e73a2bbf3139fff7738 : SUCCESS in 10m 20s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"3cdea7659c15c5fe71b4bd7efc4b2082083d580f","revisions":{"13b6986930a681ae0ebba294f7ecc58b79d44313":{"kind":"REWORK","_number":1,"created":"2026-08-14 12:09:43.000000000","uploader":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"ref":"refs/changes/63/1000963/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/63/1000963/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/63/1000963/1"}}},"commit":{"parents":[{"commit":"fbd4a81be3a34c04fdafd2b7c0d434102be18d34","subject":"libvirt: Render guest interface PCI address in config","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/fbd4a81be3a34c04fdafd2b7c0d434102be18d34"}]}],"author":{"name":"Pierre Libeau","email":"pierre.libeau@corp.ovh.com","date":"2026-08-14 10:24:54.000000000","tz":120},"committer":{"name":"Pierre Libeau","email":"pierre.libeau@corp.ovh.com","date":"2026-08-14 12:09:16.000000000","tz":120},"subject":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration","message":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration\n\nWhen the domain XML is regenerated on hard reboot, power on or resume on\nhost boot, network interfaces are emitted in network_info order and no\nexplicit guest \u003caddress type\u003d\u0027pci\u0027\u003e is set, so libvirt auto-assigns each\nvNIC\u0027s guest PCI slot from the XML order. When that order changed since the\nprevious boot (port detach/reattach, migration, info-cache rebuild), the\nguest PCI slots of the vNICs were swapped. Guests that map their NICs by PCI\nenumeration order and cannot pin a port to a MAC (e.g. FortiGate\nport1/port2), and that do not consume the metadata API device role tags,\nthen ended up with their interfaces inverted, which could break\nconnectivity.\n\nReuse the guest PCI address each vNIC had in the previous domain (already\navailable as old_guest, used for firmware auto-selection), matched by MAC --\nthe only stable property of the chain -- so the mapping stays stable\nregardless of network_info order.\n\nBecause the compute API reference states that guests should not rely on\ndevice order and should use device role tags instead, this is guarded by a\nnew [libvirt] preserve_vif_pci_addresses option that is disabled by default;\nenable it only for guests that cannot use device tags. It only applies when\na previous domain definition is available. spawn, rebuild, evacuate, cold\nmigration and unshelve have no previous domain on the target and are not\ncovered here; they will need the address to be persisted (follow-up).\n\nThis makes the reproducer added in an earlier change pass.\n\nPartial-Bug: #2163417\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\nChange-Id: I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9\nSigned-off-by: Pierre Libeau \u003cpierre.libeau@corp.ovh.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/13b6986930a681ae0ebba294f7ecc58b79d44313"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/13b6986930a681ae0ebba294f7ecc58b79d44313"}]},"branch":"refs/heads/master"},"9add57c97c9942d0280aed8e95c24e17ac48a905":{"kind":"REWORK","_number":2,"created":"2026-08-14 15:49:47.000000000","uploader":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"ref":"refs/changes/63/1000963/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/63/1000963/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/63/1000963/2"}}},"commit":{"parents":[{"commit":"1885692be56956fdf30af2d9cb4d3168f5e797cb","subject":"libvirt: Render guest interface PCI address in config","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/1885692be56956fdf30af2d9cb4d3168f5e797cb"}]}],"author":{"name":"Pierre Libeau","email":"pierre.libeau@corp.ovh.com","date":"2026-08-14 15:31:46.000000000","tz":120},"committer":{"name":"Pierre Libeau","email":"pierre.libeau@corp.ovh.com","date":"2026-08-14 15:49:36.000000000","tz":120},"subject":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration","message":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration\n\nWhen the domain XML is regenerated on hard reboot, power on or resume on\nhost boot, network interfaces are emitted in network_info order and no\nexplicit guest \u003caddress type\u003d\u0027pci\u0027\u003e is set, so libvirt auto-assigns each\nvNIC\u0027s guest PCI slot from the XML order. When that order changed since the\nprevious boot (port detach/reattach, migration, info-cache rebuild), the\nguest PCI slots of the vNICs were swapped. Guests that map their NICs by PCI\nenumeration order and cannot pin a port to a MAC (e.g. FortiGate\nport1/port2), and that do not consume the metadata API device role tags,\nthen ended up with their interfaces inverted, which could break\nconnectivity.\n\nReuse the guest PCI address each vNIC had in the previous domain (already\navailable as old_guest, used for firmware auto-selection), matched by MAC --\nthe only stable property of the chain -- so the mapping stays stable\nregardless of network_info order.\n\nBecause the compute API reference states that guests should not rely on\ndevice order and should use device role tags instead, this is guarded by a\nnew [libvirt] preserve_vif_pci_addresses option that is disabled by default;\nenable it only for guests that cannot use device tags. It only applies when\na previous domain definition is available. spawn, rebuild, evacuate, cold\nmigration and unshelve have no previous domain on the target and are not\ncovered here; they will need the address to be persisted (follow-up).\n\nThis flips the reproducer added in an earlier change so that each vNIC now\nkeeps its guest PCI address across regeneration.\n\nPartial-Bug: #2163417\nChange-Id: I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Pierre Libeau \u003cpierre.libeau@corp.ovh.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/9add57c97c9942d0280aed8e95c24e17ac48a905"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/9add57c97c9942d0280aed8e95c24e17ac48a905"}]},"branch":"refs/heads/master"},"3cdea7659c15c5fe71b4bd7efc4b2082083d580f":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2026-08-17 13:40:11.000000000","uploader":{"_account_id":33607,"name":"Pierre Libeau","email":"pierre.libeau@ovhcloud.com","username":"plibeau"},"ref":"refs/changes/63/1000963/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/63/1000963/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/63/1000963/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/63/1000963/3"}}},"commit":{"parents":[{"commit":"bbbc1fa7577b5373c21bcdf71eb63ac249a4c0dc","subject":"libvirt: Render guest interface PCI address in config","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/bbbc1fa7577b5373c21bcdf71eb63ac249a4c0dc"}]}],"author":{"name":"Pierre Libeau","email":"pierre.libeau@corp.ovh.com","date":"2026-08-14 15:31:46.000000000","tz":120},"committer":{"name":"Pierre Libeau","email":"pierre.libeau@corp.ovh.com","date":"2026-08-17 13:39:55.000000000","tz":120},"subject":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration","message":"libvirt: Preserve vNIC guest PCI address on domain XML regeneration\n\nWhen the domain XML is regenerated on hard reboot, power on or resume on\nhost boot, network interfaces are emitted in network_info order and no\nexplicit guest \u003caddress type\u003d\u0027pci\u0027\u003e is set, so libvirt auto-assigns each\nvNIC\u0027s guest PCI slot from the XML order. When that order changed since the\nprevious boot (port detach/reattach, migration, info-cache rebuild), the\nguest PCI slots of the vNICs were swapped. Guests that map their NICs by PCI\nenumeration order and cannot pin a port to a MAC (e.g. FortiGate\nport1/port2), and that do not consume the metadata API device role tags,\nthen ended up with their interfaces inverted, which could break\nconnectivity.\n\nReuse the guest PCI address each vNIC had in the previous domain (already\navailable as old_guest, used for firmware auto-selection), matched by MAC --\nthe only stable property of the chain -- so the mapping stays stable\nregardless of network_info order.\n\nBecause the compute API reference states that guests should not rely on\ndevice order and should use device role tags instead, this is guarded by a\nnew [libvirt] preserve_vif_pci_addresses option that is disabled by default;\nenable it only for guests that cannot use device tags. It only applies when\na previous domain definition is available. spawn, rebuild, evacuate, cold\nmigration and unshelve have no previous domain on the target and are not\ncovered here; they will need the address to be persisted (follow-up).\n\nThis flips the reproducer added in an earlier change so that each vNIC now\nkeeps its guest PCI address across regeneration.\n\nPartial-Bug: #2163417\nChange-Id: I3e4a0e39ddda3e2d15fe6aba7e6f328c79b5d3f9\nAssisted-By: Claude Code Opus 4.8\nSigned-off-by: Pierre Libeau \u003cpierre.libeau@corp.ovh.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/3cdea7659c15c5fe71b4bd7efc4b2082083d580f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/3cdea7659c15c5fe71b4bd7efc4b2082083d580f"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
