)]}'
{"id":"openstack%2Fcyborg~989470","triplet_id":"openstack%2Fcyborg~master~I14dba5d0de833c9f2df28478daacbf8250de2127","project":"openstack/cyborg","branch":"master","topic":"pci-sim","attention_set":{},"removed_from_attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-06-17 12:38:57.000000000","reason":"\u003cGERRIT_ACCOUNT_11604\u003e replied on the change","reason_account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},"34452":{"account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"last_update":"2026-06-15 15:04:20.000000000","reason":"\u003cGERRIT_ACCOUNT_34452\u003e replied on the change","reason_account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}},"12393":{"account":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"last_update":"2026-06-17 14:02:43.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I14dba5d0de833c9f2df28478daacbf8250de2127","subject":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","status":"MERGED","created":"2026-05-21 00:22:23.000000000","updated":"2026-06-17 14:05:22.000000000","submitted":"2026-06-17 14:02:43.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":34,"unresolved_comment_count":8,"has_review_started":true,"submission_id":"989470-pci-sim","meta_rev_id":"1e7a6fe893b5fc721bacb7f6bf136e43847578c3","_number":989470,"virtual_id_number":989470,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-06-17 14:02:43.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":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":2,"date":"2026-06-17 12:38:57.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":1,"date":"2026-06-15 15:04:20.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":1,"date":"2026-06-17 11:43:39.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"value":0,"_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":{"approved":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":1,"date":"2026-06-17 13:03:56.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"value":0,"_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}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-05-21 01:12:17.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-06-01 08:14:25.000000000","updated_by":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"reviewer":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"state":"CC"},{"updated":"2026-06-04 14:40:14.000000000","updated_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"reviewer":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"state":"CC"},{"updated":"2026-06-15 15:04:20.000000000","updated_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"reviewer":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"state":"REVIEWER"},{"updated":"2026-06-17 11:43:39.000000000","updated_by":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"reviewer":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"state":"REVIEWER"}],"messages":[{"id":"d49e29fc9e5c4899b3046feeafc78fc9dd068620","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-05-21 00:22:23.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"8409ba1e954c489771e7f17ea7393fcca8051b0a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 01:12:17.000000000","message":"Patch Set 1: 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/634b651a2dcb4949aef44a749d7f641a\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/157c0798d5a843f284c3d92442761a08 : SUCCESS in 1m 30s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/6986f64ab4e64299a259749e33ba98f9 : FAILURE in 3m 52s\n- requirements-check https://zuul.opendev.org/t/openstack/build/cd0268ef8f8a437b882bc1ae19d065e9 : SUCCESS in 2m 09s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/1dcc60e8dfeb49f5bdc08f1f15458263 : SUCCESS in 5m 03s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fd638d33b0614977a59028033fcdd1b0 : SUCCESS in 7m 58s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cc51cca1c629435c949ee60956458aa9 : SUCCESS in 3m 04s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/4a6bc9ea16384528864b688e235d0ab7 : FAILURE in 4m 06s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/75c8bc74e6e14daaa0d7fa38b5df4dbd : FAILURE in 2m 13s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/8785617a0a9f4579a78ca6342bb3d3e0 : FAILURE in 5m 47s (non-voting)\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/80489ee07c6d4df18aaa224ccaae25e3 : SUCCESS in 17m 07s\n- cyborg-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/4d0fd918590c475cbfc8541ce36216b3 : SUCCESS in 13m 45s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/3d62b37737ac43bf9f9b5f536631803c : FAILURE in 44m 21s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e5b5658b87db4d25a40ffe6c37242123 : FAILURE in 43m 42s","accounts_in_message":[],"_revision_number":1},{"id":"61e063da1a20767da2d76a30ed16c0119a99daa7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-05-26 20:22:59.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"fe78f0c34c734b74cf613b67363ca76ceb7d0d5f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-26 21:02: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/0884f584711044078eb26f0e469b01a8\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/eb3cae6bf4744c5584f7a7c51001dcf8 : SUCCESS in 4m 33s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3dab5c7d62684cd68a2d3a5cd58a1a56 : SUCCESS in 3m 48s\n- requirements-check https://zuul.opendev.org/t/openstack/build/589043d8db5347c98ca8d9d5f654fd43 : SUCCESS in 3m 27s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/adcc8f9205994da2ba3a439624d80146 : SUCCESS in 3m 39s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c6588efc37bb479da3aa10eebfe3b539 : SUCCESS in 7m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d2329f083ac04a46ac0767d2ca044cb6 : SUCCESS in 2m 54s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/2234e20d7af9419e9d374a44b515a84a : SUCCESS in 4m 01s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/951938f9cc674dbc95d136aa16db4419 : SUCCESS in 3m 26s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/1df12bce55c14742b1b974f911a7429b : SUCCESS in 6m 40s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/ff323fcf2ffc4696b8740e656f5b1245 : FAILURE in 23m 01s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/85901b882ed94447a8ec9644a399da62 : FAILURE in 26m 01s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/0b1dcdae39eb4679af28f268355f4fa0 : FAILURE in 19m 41s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/0fae67425f204b96aa1e40fc6d193c2f : FAILURE in 34m 56s","accounts_in_message":[],"_revision_number":2},{"id":"82f9d917b9de78f374bd6cd669ff3d8e6b0c0467","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-05-27 21:00:13.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"c62a14ae88f77e51723e760271d09616ffdb0ada","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-05-27 21:01:49.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"4009010e41e9182c7a252beee31900b45d32b310","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 22:04:16.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/7ec353625cc14b099b77c111a48bea8a\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/ac52ed0ecef04dd0961145c0349a15d4 : SUCCESS in 4m 07s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/2d825fda2f324ca6b587396166aaa32b : SUCCESS in 4m 48s\n- requirements-check https://zuul.opendev.org/t/openstack/build/7b000bcba1614859bfa5e2d8d8ff6880 : SUCCESS in 2m 16s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a3c9381f09084adf820ce2b96670d434 : SUCCESS in 4m 51s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0089126f176942e99f8360ee8e3749fd : SUCCESS in 9m 11s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4995f0fe9a2742b8b7b615cbd6ebeeb3 : SUCCESS in 3m 16s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/7017e44d166e437d9b2210787094c4ec : SUCCESS in 3m 28s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/22da678110bd4ad4a8c44ca0518e75b9 : SUCCESS in 5m 36s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/7c532c6410e64b34a1a4e63abc36784f : SUCCESS in 3m 25s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/33449948e10c41bcb4f73e917b6830fb : SUCCESS in 20m 19s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/d779176eebcd40b98dbb5d18d9d3059f : SUCCESS in 21m 46s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/adb02843ce904d4fbf5c3c01200bf538 : FAILURE in 53m 15s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e1f021bd267a44158621856142da2d9f : FAILURE in 41m 17s","accounts_in_message":[],"_revision_number":3},{"id":"1dea70b6fdc0571717ee7a74ef62283f83702c34","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-05-31 15:25:06.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"9ba4ceba231ded7b38331040ade03155f42af51c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-31 16:19:12.000000000","message":"Patch Set 4: 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/fde5b993b72c45ff99a519e67e0924cc\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/84c3c15c07714077a71c7e958e171957 : SUCCESS in 3m 13s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b5ce379cf4c946569ea36c9deb71122c : SUCCESS in 4m 11s\n- requirements-check https://zuul.opendev.org/t/openstack/build/9bda5aec3ca545adae5e99bf3baac898 : SUCCESS in 2m 44s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/471d8c570e924f92bc3ffee2ea308e40 : SUCCESS in 3m 46s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/dbe93c03bb904eba9dde83e696764fbd : SUCCESS in 8m 18s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d7c3e257691f410e91ea0fe4f7465539 : SUCCESS in 2m 58s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/75b282a214d748218eb030d62c045a68 : SUCCESS in 3m 37s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/edcdf3298e19477f941dbc784952cab2 : SUCCESS in 3m 52s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b2c29bbda9754e9fa95d52c2323edbf4 : SUCCESS in 6m 11s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/9e70f5801b8a4447ad9eda7272fc9894 : SUCCESS in 37m 20s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/5e2bfb8e4fc84b9681b733e86277aa69 : SUCCESS in 29m 36s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/b24d5bff74824992bca498605eb73a14 : FAILURE in 22m 21s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/bccbb5e8ce3945f89003b6c1067d0149 : FAILURE in 46m 42s","accounts_in_message":[],"_revision_number":4},{"id":"c962ebecb88a5408a12c89f722f4ef8850140934","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-01 07:06:00.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"c7390f93ca2516474ee14f59f88985677992ddbc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-01 07:24:34.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"c436f1343065c865a96a762047e3de644841f591","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-01 08:24:37.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b53e8baf89644eb2b6147ba862ff4d56\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/4c8e9a377091495286c876ba76cd2378 : SUCCESS in 3m 12s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/cab9552daac54089affe138da3b3294e : SUCCESS in 4m 04s\n- requirements-check https://zuul.opendev.org/t/openstack/build/700097c781074b5bb0ada71712e95cac : SUCCESS in 2m 03s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/fb9fe5963aea4c63a073699f069ec1c5 : SUCCESS in 3m 55s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9c7d6d52c7af4c319cb05fcf30b3a61a : SUCCESS in 4m 17s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3cb211bced5449cfa45a6f24d8a2bce4 : SUCCESS in 5m 33s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/ab7f89cdb5984000948147c827e5ee14 : SUCCESS in 5m 18s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/08daf29eaa4d4ff188afe57c11698168 : SUCCESS in 3m 23s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/40c21a283da844fe8c8900b647a37682 : SUCCESS in 6m 11s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/76032c0e1ad04c099e55a4a591efc9e8 : SUCCESS in 30m 54s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/d0ca8084648d49d587574132c04fda39 : SUCCESS in 13m 17s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/b0ea832d32cd4066affd20e71c27a943 : SUCCESS in 36m 05s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/cb66468960d444fbbfeb6ad70a32ae91 : SUCCESS in 54m 11s","accounts_in_message":[],"_revision_number":5},{"id":"1a645b3bc3b1e3474c9c58564bcf7cfb1b6b91a0","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-06-04 14:40:14.000000000","message":"Patch Set 5:\n\n(6 comments)","accounts_in_message":[],"_revision_number":5},{"id":"5d40238b17d2a8261648924650c07fd558763963","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-04 15:05:18.000000000","message":"Patch Set 5: Workflow-1\n\n(6 comments)","accounts_in_message":[],"_revision_number":5},{"id":"4d631f1419e6e5afbe07907a5e64734d256cc1fe","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-12 15:20:01.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"08a8213719ecf37a0b1c100e8660499d95028c5b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-12 16:26:37.000000000","message":"Patch Set 6: 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/774dada2ee2a45f0837421e56398e1b7\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/a26bfed4ae964ec797769a57b8c0cbf0 : SUCCESS in 4m 20s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/5254557c86db4e6da1580a3adfbb35cd : SUCCESS in 5m 51s\n- requirements-check https://zuul.opendev.org/t/openstack/build/0e9a600c1fea4739bf4591fd658fa784 : SUCCESS in 2m 31s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/793b19dbc86e45808a4bde1342027b8b : SUCCESS in 4m 52s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f49760e2aa72468887de0f2c894d6b6e : SUCCESS in 9m 10s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/39212db2a0b8448facf7374f0c108ed4 : FAILURE in 3m 28s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1cd41a3485b040e9b20648e4d432b446 : SUCCESS in 4m 19s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/35da6200a7104688a640e5b2acba975f : SUCCESS in 3m 56s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ba7b91fc82dd44b391487eb47fd38f43 : SUCCESS in 4m 29s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/2643958b593742f0a886ab406a752f55 : SUCCESS in 20m 57s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/5c7ffb3667ed44659baf42bf81f47080 : SUCCESS in 32m 13s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/7bb963a0d6a84487b5d19abb65ace43f : SUCCESS in 50m 10s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e5d16de8713d4aa092ef13012e89b65f : SUCCESS in 58m 50s","accounts_in_message":[],"_revision_number":6},{"id":"d7a4fa5a71e76ee0f016b4bbd0eef86dddff2ef4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-15 11:06:52.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":7},{"id":"dfaf9d8e9d6287ff75ad258d31516fc02599c590","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-15 12:11:44.000000000","message":"Patch Set 7: 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/03aea816305a4ad9ab740063601eac41\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/66651465c79d4b80b818aa419c621bcd : POST_FAILURE in 2m 26s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3f3be0020b354b709ac31fedf5950fc3 : SUCCESS in 5m 08s\n- requirements-check https://zuul.opendev.org/t/openstack/build/7f210e9e03e84fada90f52d97d24b383 : SUCCESS in 2m 22s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/68762c28299240ff894d51eb21b5658b : SUCCESS in 4m 00s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/346d4986bf284a44a03c271338d7b8bb : SUCCESS in 8m 20s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/499143602f174a8a990f89d3b0633e19 : SUCCESS in 2m 09s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/e9ef65e27bbd4383b6a64a25cf6a51ee : POST_FAILURE in 3m 20s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/1183fd2f8b0343198727f3c12dca5b34 : POST_FAILURE in 3m 52s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/df30fad424c142e0ba9713914f8f5ad0 : SUCCESS in 6m 24s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/d827533034754776b7e7a778a98da3ac : POST_FAILURE in 37m 54s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/95ae70a7ab0f4d598ba905452905e95c : POST_FAILURE in 31m 06s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/c2ea207bca3f40038891c6e1dbe9acb1 : POST_FAILURE in 25m 06s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/7f910f7b1b4041bbabce714d6094b6f1 : SUCCESS in 58m 43s","accounts_in_message":[],"_revision_number":7},{"id":"b2c933cc2265ab2112b8730ed9669e009c02fc0c","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-15 13:46:41.000000000","message":"Patch Set 7:\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"79a1f9d5ff9731324129d8e5b61cfbe24cc13715","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-15 14:50:45.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/78d9b53b6ece4cb588bf4dd9da85f5ba\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/164f33fb60174911a2c3651ff15e1b4d : SUCCESS in 2m 59s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/94baa5af928b4b0893658ec4518e49a1 : SUCCESS in 4m 36s\n- requirements-check https://zuul.opendev.org/t/openstack/build/d77c1ce041474e45bfb09e8f62c0f758 : SUCCESS in 2m 19s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/8f12654b9dee4c4a901e90f740eb19a4 : SUCCESS in 3m 12s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e0be90962c5b4d4db289c364d304428f : SUCCESS in 7m 15s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/02b3e322edab4bb096c148cc22e750d5 : SUCCESS in 3m 47s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/2cdf98b094884f448c561b2a96327df4 : SUCCESS in 4m 36s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d67a092a9dbc445581f9a8c401a23b92 : SUCCESS in 4m 24s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/078cfbe5720e4a79a5d0bba15df5116f : SUCCESS in 4m 30s (non-voting)\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/7922d9ba1d9d48008c07c3b7cc06eff7 : SUCCESS in 40m 48s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/984f250b8cc2421589a0b5675963afe0 : SUCCESS in 22m 45s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/ff04c652e3be443ab7985ca3dec6ebf1 : SUCCESS in 55m 49s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/3bc1d6f9e9ae4670b3ed1445e4933b2b : SUCCESS in 30m 38s","accounts_in_message":[],"_revision_number":7},{"id":"f4fae4a56fbd9a974bc0c7ef5d9aea0b821358d9","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-06-15 15:04:20.000000000","message":"Patch Set 7: Code-Review+1\n\n(6 comments)","accounts_in_message":[],"_revision_number":7},{"id":"d1f5e8006605f0f05efcd63b487edd9f4b86ec96","author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"date":"2026-06-17 06:14:51.000000000","message":"Patch Set 7:\n\n(2 comments)","accounts_in_message":[],"_revision_number":7},{"id":"62286d280fdf967d517f7785ae7e6f4bfec84172","author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"date":"2026-06-17 08:06:02.000000000","message":"Patch Set 7:\n\n(2 comments)","accounts_in_message":[],"_revision_number":7},{"id":"bb10095c54c2ab2961f983d52acb5273a1dc08da","author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"date":"2026-06-17 11:43:39.000000000","message":"Patch Set 7: Code-Review+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":7},{"id":"81d425ba3ea8ca81b55b3575890eebdfa3d4e8b9","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-17 12:38:57.000000000","message":"Patch Set 7: Code-Review+2\n\n(6 comments)","accounts_in_message":[],"_revision_number":7},{"id":"58301fbd423522dac5ad32ec85b9b243506897aa","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-17 13:03:56.000000000","message":"Patch Set 7: Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"4d049a3a42f203345354b47215bdd10d7b262311","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-17 13:05:23.000000000","message":"Patch Set 7: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":7},{"id":"65702fa023b580fa934a96cc8b867d3e2b04f1e3","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-17 14:02:43.000000000","message":"Patch Set 7: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9eed5ed55e5a4fd3a1f6e65ac454256a\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/f545b56e2f6a42a4a4751bdba5d034de : SUCCESS in 1m 55s\n- requirements-check https://zuul.opendev.org/t/openstack/build/fa62c5918f1c4e2ca9f3d0f4d777275d : SUCCESS in 2m 17s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d5b45f65e3794588acd9655336ac3063 : SUCCESS in 3m 45s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6efbe6bae39b45f6869ca2ed6eac4d70 : SUCCESS in 3m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/84ed51b4a96f424faa8324802b963ec8 : SUCCESS in 3m 24s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/5efda6d77e8c4c15812f3e939a9fba5d : SUCCESS in 3m 57s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9765ff4f9bda43e983f9394bb37c07cd : SUCCESS in 3m 44s\n- cyborg-tempest-py3 https://zuul.opendev.org/t/openstack/build/3679412642164f3493e279d0d44be220 : SUCCESS in 31m 31s\n- cyborg-tempest-ipv6 https://zuul.opendev.org/t/openstack/build/bcd6fd74dcdb47538e6069408663cb76 : SUCCESS in 18m 04s\n- cyborg-grenade https://zuul.opendev.org/t/openstack/build/8187c2b9f32b4bacac8e865c14484241 : SUCCESS in 24m 29s\n- cyborg-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e6f6994ffadb43db97a570b20ff345ae : SUCCESS in 52m 45s","accounts_in_message":[],"_revision_number":7},{"id":"e655d797d536d57471d4f9ef772d77611b3a1dfb","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-17 14:02:43.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":7},{"id":"1e7a6fe893b5fc721bacb7f6bf136e43847578c3","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-17 14:05:22.000000000","message":"Patch Set 7:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/960e7a06fc0649eda5f422045be4ef26\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f3424cb7c5c94309a45ce41d13317698 : SUCCESS in 59s","accounts_in_message":[],"_revision_number":7}],"current_revision_number":7,"current_revision":"7b1fc570bd189f18ad5f4a44926a736f8b442198","revisions":{"973f021c43ec9b12e763a0b713a14700b2ac4fe3":{"kind":"REWORK","_number":1,"created":"2026-05-21 00:22:23.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/1"}}},"commit":{"parents":[{"commit":"186cdd2b76aff57233660042f71761383285e5e8","subject":"Update DevStack setup guide and add sample local.conf","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/186cdd2b76aff57233660042f71761383285e5e8"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-21 00:22:02.000000000","tz":60},"subject":"[WIP] devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"[WIP] devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle (default\n  True) and the full set of PCI_SIM_* variables to control the fake PCI\n  topology and service integration. PCI_SIM_CONFIGURE_NOVA_PCI and\n  PCI_SIM_CONFIGURE_CYBORG_PCI are both default False so operators\n  explicitly opt in to each service integration.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/973f021c43ec9b12e763a0b713a14700b2ac4fe3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/973f021c43ec9b12e763a0b713a14700b2ac4fe3"}]},"branch":"refs/heads/master"},"1cd58b47de4de999c52c46c0a8300e2a1ae8efed":{"kind":"REWORK","_number":2,"created":"2026-05-26 20:22:59.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/2"}}},"commit":{"parents":[{"commit":"0a13bcad9890f4b3401ce1207c0b8e92d932b750","subject":"Move cyborg-tempest job definitions to cyborg","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/0a13bcad9890f4b3401ce1207c0b8e92d932b750"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-26 20:22:33.000000000","tz":60},"subject":"[WIP] devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"[WIP] devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle\n  (default False) and the full set of PCI_SIM_* variables to control\n  the fake PCI topology and service integration.\n  PCI_SIM_CONFIGURE_NOVA_PCI and PCI_SIM_CONFIGURE_CYBORG_PCI are both\n  defaulted to ENABLE_PCI_SIM but provide a explicy opt out if required.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/1cd58b47de4de999c52c46c0a8300e2a1ae8efed"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/1cd58b47de4de999c52c46c0a8300e2a1ae8efed"}]},"branch":"refs/heads/master"},"a97e2097ede34f77b09330f7823a369d55664242":{"kind":"REWORK","_number":3,"created":"2026-05-27 21:00:13.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/3"}}},"commit":{"parents":[{"commit":"0a13bcad9890f4b3401ce1207c0b8e92d932b750","subject":"Move cyborg-tempest job definitions to cyborg","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/0a13bcad9890f4b3401ce1207c0b8e92d932b750"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-27 20:59:53.000000000","tz":60},"subject":"[WIP] devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"[WIP] devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle\n  (default False) and the full set of PCI_SIM_* variables to control\n  the fake PCI topology and service integration.\n  PCI_SIM_CONFIGURE_NOVA_PCI and PCI_SIM_CONFIGURE_CYBORG_PCI are both\n  defaulted to ENABLE_PCI_SIM but provide a explicy opt out if required.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/a97e2097ede34f77b09330f7823a369d55664242"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/a97e2097ede34f77b09330f7823a369d55664242"}]},"branch":"refs/heads/master"},"933b133de1a56c38a2560e9892ec4e74df379438":{"kind":"REWORK","_number":4,"created":"2026-05-31 15:25:06.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/4"}}},"commit":{"parents":[{"commit":"2875d3c12d4484e9336ba5084f32f2acf83a2366","subject":"Extract shared Zuul config into abstract base job","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2875d3c12d4484e9336ba5084f32f2acf83a2366"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-31 15:18:26.000000000","tz":0},"subject":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle\n  (default False) and the full set of PCI_SIM_* variables to control\n  the fake PCI topology and service integration.\n  PCI_SIM_CONFIGURE_NOVA_PCI and PCI_SIM_CONFIGURE_CYBORG_PCI are both\n  defaulted to ENABLE_PCI_SIM but provide a explicy opt out if required.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/933b133de1a56c38a2560e9892ec4e74df379438"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/933b133de1a56c38a2560e9892ec4e74df379438"}]},"branch":"refs/heads/master"},"41398512fc77cb55da86d531b88961b7ac9fa187":{"kind":"REWORK","_number":5,"created":"2026-06-01 07:24:34.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/5"}}},"commit":{"parents":[{"commit":"2875d3c12d4484e9336ba5084f32f2acf83a2366","subject":"Extract shared Zuul config into abstract base job","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2875d3c12d4484e9336ba5084f32f2acf83a2366"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-01 07:23:25.000000000","tz":0},"subject":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle\n  (default False) and the full set of PCI_SIM_* variables to control\n  the fake PCI topology and service integration.\n  PCI_SIM_CONFIGURE_NOVA_PCI and PCI_SIM_CONFIGURE_CYBORG_PCI are both\n  defaulted to ENABLE_PCI_SIM but provide a explicy opt out if required.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/41398512fc77cb55da86d531b88961b7ac9fa187"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/41398512fc77cb55da86d531b88961b7ac9fa187"}]},"branch":"refs/heads/master"},"4a8a85c1112931bb4444a07cf38d11a3ad01d801":{"kind":"REWORK","_number":6,"created":"2026-06-12 15:20:01.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/6"}}},"commit":{"parents":[{"commit":"2875d3c12d4484e9336ba5084f32f2acf83a2366","subject":"Extract shared Zuul config into abstract base job","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/2875d3c12d4484e9336ba5084f32f2acf83a2366"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-12 15:13:45.000000000","tz":0},"subject":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle\n  (default False) and the full set of PCI_SIM_* variables to control\n  the fake PCI topology and service integration.\n  PCI_SIM_CONFIGURE_NOVA_PCI and PCI_SIM_CONFIGURE_CYBORG_PCI are both\n  defaulted to ENABLE_PCI_SIM but provide a explicy opt out if required.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4a8a85c1112931bb4444a07cf38d11a3ad01d801"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/4a8a85c1112931bb4444a07cf38d11a3ad01d801"}]},"branch":"refs/heads/master"},"7b1fc570bd189f18ad5f4a44926a736f8b442198":{"kind":"REWORK","_number":7,"created":"2026-06-15 11:06:52.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/70/989470/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cyborg","ref":"refs/changes/70/989470/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cyborg refs/changes/70/989470/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cyborg refs/changes/70/989470/7"}}},"commit":{"parents":[{"commit":"233f2a5b7e396c24bf15ae22f8cf64a480666f5c","subject":"Merge \"pci: add OWNER_CYBORG constant and fix trait\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/233f2a5b7e396c24bf15ae22f8cf64a480666f5c"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-05-20 23:37:17.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-06-15 09:49:23.000000000","tz":60},"subject":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture","message":"devstack: add pci-sim fake SR-IOV PCI passthrough test fixture\n\nTesting Cyborg\u0027s pci_driver and Nova PCI passthrough normally requires\nphysical SR-IOV hardware. This change introduces pci-sim, an out-of-tree\nLinux kernel module (fake_pci_sriov) that creates fake SR-IOV PCI devices\nwhose virtual functions can be bound to VFIO and assigned to QEMU guests.\nThis makes it possible to exercise the full Nova and Cyborg PCI passthrough\ncontrol plane, including device enumeration, VF assignment, and VFIO\npassthrough to CirrOS guests, in a standard devstack VM with no physical\nSR-IOV hardware present.\n\npci-sim/\n  Source for the fake_pci_sriov out-of-tree kernel module. The module\n  creates one fake PCI host bridge per PF, each with software-emulated\n  VFs backed by a 16550-style UART loopback payload. Build artifacts are\n  excluded via .gitignore. The directory is excluded from Python wheels\n  and sdists via [tool.setuptools.packages.find].\n\ndevstack/\n  lib/pci_sim provides functions to build, load, configure, and unload\n  the module. All paths are expressed relative to CYBORG_DIR so they\n  resolve correctly within the cyborg checkout.\n\n  devstack/settings gains a new ENABLE_PCI_SIM master toggle\n  (default False) and the full set of PCI_SIM_* variables to control\n  the fake PCI topology and service integration.\n  PCI_SIM_CONFIGURE_NOVA_PCI and PCI_SIM_CONFIGURE_CYBORG_PCI are both\n  defaulted to ENABLE_PCI_SIM but provide a explicy opt out if required.\n\n  plugin.sh drives the pci-sim lifecycle alongside cyborg\u0027s own phases.\n  The pci-sim cyborg service configuration is applied before start_cyborg\n  in the extra phase so the agent picks up pci_driver and\n  passthrough_whitelist on first start.\n\n  devstack/local-conf.pci-sim.sample provides a ready-to-use local.conf\n  for a two-PF, four-VF-per-PF topology with both Nova and Cyborg\n  integrations enabled.\n\ntools/\n  check-kernel-config.sh validates the running kernel\u0027s config against\n  the requirements for fake_pci_sriov before attempting a build.\n  run-devstack-serial-echo-test.sh creates test VMs using the pci-sim\n  flavors and validates the UART echo path inside a CirrOS guest.\n\ndoc/source/contributor/pci-sim/\n  New contributor documentation covering build instructions, devstack\n  setup, plugin settings, testing procedures, and kernel config\n  requirements. Linked from the contributor index.\n\nAssisted-By: pi gpt-5.5\nAssisted-By: pi sonnet-4.6\nChange-Id: I14dba5d0de833c9f2df28478daacbf8250de2127\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7b1fc570bd189f18ad5f4a44926a736f8b442198"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cyborg/commit/7b1fc570bd189f18ad5f4a44926a736f8b442198"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
