)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"921d777424c0b75c300b47ea7ee8355371cb8740","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8dbc1ae4_d6524776","updated":"2026-07-02 14:37:11.000000000","message":"we need to replace cyborg-tempest with cyborg-tempest-py3","commit_id":"dfe4ac2cadb4845d5791ec743136e58cb4c9a35f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4a9dbb61cbef0c477440bf1523a7779b2af7eac3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3bb4cfe4_ae6c5e97","updated":"2026-07-15 17:11:42.000000000","message":"for4 the sake of making forward progress and because this does actually work\n\nhttps://cdfa0bcb525aa07bafab-7fcc09990fa49a538a92f84edea4c03c.ssl.cf1.rackcdn.com/openstack/3765c52677b14f208a6192b813ba0a1b/testr_results.html\n\ni think we can proceed with this for now an then refine it once we have this baseline in place. Ill leave this open for another day or so and try and loop back to it before the end fo the week if there are no other objections to it we can proceed","commit_id":"3076d69c1d06a613d5dc0e2064361174be8a833c"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"f2f0c86e5aa1a3c80044c493d218c68055207b4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"51ff44e7_d698a070","updated":"2026-07-15 17:24:16.000000000","message":"looks good and the tests are passing","commit_id":"3076d69c1d06a613d5dc0e2064361174be8a833c"}],"cyborg_tempest_plugin/config.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"9ece834a4b41177c2f86e77ec90c57a448fbf7bc","unresolved":true,"context_lines":[{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CyborgGroup \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"device_profile_name\","},{"line_number":36,"context_line":"               default\u003d\"\","},{"line_number":37,"context_line":"               help\u003d\"Device profile name used by Cyborg scenario tests.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"pci_vendor_id\","}],"source_content_type":"text/x-python","patch_set":4,"id":"361c56ef_7480909b","line":35,"updated":"2026-07-14 13:42:25.000000000","message":"how are we going to test different drivers? Do we want to test multiple drivers in the same CI job or do we want separate jobs? I think it should be possible to test all in one job if we have per driver config options like the ones introduced here","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4db7536b5ef02a33d47fc9318a285cd23d26884","unresolved":true,"context_lines":[{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CyborgGroup \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"device_profile_name\","},{"line_number":36,"context_line":"               default\u003d\"\","},{"line_number":37,"context_line":"               help\u003d\"Device profile name used by Cyborg scenario tests.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"pci_vendor_id\","}],"source_content_type":"text/x-python","patch_set":4,"id":"7ca65a71_77c83730","line":35,"in_reply_to":"361c56ef_7480909b","updated":"2026-07-15 13:05:55.000000000","message":"perhaps we should rename this now aith a pci_ prefix\n\ni was expecting each driver to have its own config sections corresponding to the device proifle they shoudl use.\n\n\nwe may also in some cases create some dynimcally in tests if needed but im expect one job with all devices supproted by pci-sim\n\ntesting that pci, nvme and mdev drivers.\n\n\nideally these same tests shoudl be reusbale with diffent hardware via modifying the config options with the expected device identifiers","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"bc2db26e2c0710f9ab4762f53ed75a8d1d89d151","unresolved":true,"context_lines":[{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CyborgGroup \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"device_profile_name\","},{"line_number":36,"context_line":"               default\u003d\"\","},{"line_number":37,"context_line":"               help\u003d\"Device profile name used by Cyborg scenario tests.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"pci_vendor_id\","}],"source_content_type":"text/x-python","patch_set":4,"id":"598210f3_9c3c65c9","line":35,"in_reply_to":"4ffa241f_85f6fa7c","updated":"2026-07-15 15:11:23.000000000","message":"Yes, this is what Joan already proposed in the mixing class cr: https://review.opendev.org/c/openstack/cyborg-tempest-plugin/+/997352/3/cyborg_tempest_plugin/config.py\n\nI am going to update this to use the same pattern.","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"419935d8a05d18e3078d849ab1a253ae0ea98518","unresolved":true,"context_lines":[{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CyborgGroup \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"device_profile_name\","},{"line_number":36,"context_line":"               default\u003d\"\","},{"line_number":37,"context_line":"               help\u003d\"Device profile name used by Cyborg scenario tests.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"pci_vendor_id\","}],"source_content_type":"text/x-python","patch_set":4,"id":"4ffa241f_85f6fa7c","line":35,"in_reply_to":"5018afe6_556a5af5","updated":"2026-07-15 13:44:52.000000000","message":"sure we can have multiple section with one per driver as long as they are cybrog prefixed\n\nif we prefix at the group level we shoudl not prefix again at the option level","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"bac43320f490dce70bd7d04a54168a44816275c8","unresolved":false,"context_lines":[{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CyborgGroup \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"device_profile_name\","},{"line_number":36,"context_line":"               default\u003d\"\","},{"line_number":37,"context_line":"               help\u003d\"Device profile name used by Cyborg scenario tests.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"pci_vendor_id\","}],"source_content_type":"text/x-python","patch_set":4,"id":"a1c993db_8b137422","line":35,"in_reply_to":"598210f3_9c3c65c9","updated":"2026-07-15 15:28:17.000000000","message":"Updated the cr with cyborg_pci config section","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bb485af79c0b4f1166d90733c180683bdacd6060","unresolved":true,"context_lines":[{"line_number":32,"context_line":")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CyborgGroup \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"device_profile_name\","},{"line_number":36,"context_line":"               default\u003d\"\","},{"line_number":37,"context_line":"               help\u003d\"Device profile name used by Cyborg scenario tests.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"pci_vendor_id\","}],"source_content_type":"text/x-python","patch_set":4,"id":"5018afe6_556a5af5","line":35,"in_reply_to":"7ca65a71_77c83730","updated":"2026-07-15 13:20:50.000000000","message":"+1 and preferably also move the options under a [cyborg_pci] or similar group as discussed in the last irc meeting, that will make the configuration more manageable while testing multiple drivers","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4a9dbb61cbef0c477440bf1523a7779b2af7eac3","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    cfg.StrOpt(\"product_id\","},{"line_number":42,"context_line":"               default\u003d\"\","},{"line_number":43,"context_line":"               help\u003d\"Expected PCI product ID visible in the guest.\"),"},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"a753af15_9b0f7272","line":44,"updated":"2026-07-15 17:11:42.000000000","message":"why did you remove the ablity to use alternitive images for cybrog\n\nro to specificy a refence flavor to use when we generate our new ones in the tests\n\nthose were there so that if we want to run this with other test and use say rhel or ubutnu vms for a cyborg test we coudl\n\nwhile we run the other test with the default cirrors image.\n\nwe can add that back later as its tehcnially not needed for now\n\nbut i dont recall any refview feedback asing you to drop those.","commit_id":"3076d69c1d06a613d5dc0e2064361174be8a833c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b21b37b7926500aef36ed5379a32afcfd04b7d6","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    cfg.StrOpt(\"product_id\","},{"line_number":42,"context_line":"               default\u003d\"\","},{"line_number":43,"context_line":"               help\u003d\"Expected PCI product ID visible in the guest.\"),"},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"11da73c0_45fe7543","line":44,"in_reply_to":"1915d423_a2f61a7d","updated":"2026-07-16 11:31:36.000000000","message":"lets readd it in the nvme test then along with the job config to use it and ill merge this as is for now","commit_id":"3076d69c1d06a613d5dc0e2064361174be8a833c"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"52cb00d90e4f7eda8777c1676eaa10dcb76e4e7a","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    cfg.StrOpt(\"product_id\","},{"line_number":42,"context_line":"               default\u003d\"\","},{"line_number":43,"context_line":"               help\u003d\"Expected PCI product ID visible in the guest.\"),"},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1915d423_a2f61a7d","line":44,"in_reply_to":"7d03ae1d_78e72d3f","updated":"2026-07-16 04:24:24.000000000","message":"EDIT: I dropped it earlier as I was thinking of using single image like ubuntu for all purpose. But your point is also valid. using two images: cirros for non-cyborg test and non-cirros for cyborg tests. That will be useful while running nvme cyborg tests.","commit_id":"3076d69c1d06a613d5dc0e2064361174be8a833c"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"cf01e8039745d4826f97ccd2c9f20ed1ac7a91cf","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    cfg.StrOpt(\"product_id\","},{"line_number":42,"context_line":"               default\u003d\"\","},{"line_number":43,"context_line":"               help\u003d\"Expected PCI product ID visible in the guest.\"),"},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7d03ae1d_78e72d3f","line":44,"in_reply_to":"a753af15_9b0f7272","updated":"2026-07-16 04:19:18.000000000","message":"For nvme tests, I need a different image, let me add that back.","commit_id":"3076d69c1d06a613d5dc0e2064361174be8a833c"}],"cyborg_tempest_plugin/services/cyborg_rest_client.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4db7536b5ef02a33d47fc9318a285cd23d26884","unresolved":true,"context_lines":[{"line_number":104,"context_line":"        return self._response_helper(resp, body)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def list_accelerator_request(self, params\u003dNone):"},{"line_number":107,"context_line":"        url \u003d self.AR_URL"},{"line_number":108,"context_line":"        if params is not None:"},{"line_number":109,"context_line":"            url +\u003d \u0027?%s\u0027 % parse.urlencode(params)"},{"line_number":110,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":111,"context_line":"        return self._response_helper(resp, body)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"66b877de_b34eae39","line":109,"range":{"start_line":107,"start_character":0,"end_line":109,"end_character":50},"updated":"2026-07-15 13:05:55.000000000","message":"this is fine for now but im tempested to factor out a helper function to built the url in a more robust way instead of ding it inline for each method but not in this change","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"}],"cyborg_tempest_plugin/tests/scenario/test_pci_driver_lifecycle.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"b04298a372f3caa8b016e46ab264be9203ac07c1","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if \u0027managed\u0027 in attach_info:"},{"line_number":96,"context_line":"            self.assertIn(attach_info[\u0027managed\u0027], (\u0027true\u0027, \u0027false\u0027))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        expected_managed \u003d CONF.cyborg.pci_expected_managed"},{"line_number":99,"context_line":"        if expected_managed:"},{"line_number":100,"context_line":"            self.assertEqual(expected_managed, attach_info.get(\u0027managed\u0027))"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"6763c680_b2b6341e","line":98,"updated":"2026-07-13 09:21:36.000000000","message":"When CONF.cyborg.pci_expected_managed is configured (e.g. \u0027true\u0027) but the ARQ attach_handle_info does not contain a \u0027managed\u0027 key, assertEqual(expected_managed, attach_info.get(\u0027managed\u0027)) fails with an opaque mismatch error instead of a clear diagnostic indicating the managed field is absent.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: When the managed field is unexpectedly absent, developers see an unhelpful value mismatch instead of a message explaining the managed key is missing from attach_handle_info. This adds debugging time during CI failure triage.\n\n**Recommendation**:\nAdd an explicit key-presence check before the equality assertion, e.g.: if expected_managed: self.assertIn(\u0027managed\u0027, attach_info); self.assertEqual(expected_managed, attach_info[\u0027managed\u0027]). This provides a clear \u0027managed not in attach_handle_info\u0027 failure message.","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"d2fa5562d146403c7c5c246c9b64d130f9356aff","unresolved":true,"context_lines":[{"line_number":103,"context_line":"        vendor_id \u003d self._normalize_pci_id(CONF.cyborg.pci_vendor_id)"},{"line_number":104,"context_line":"        product_id \u003d self._normalize_pci_id(CONF.cyborg.pci_product_id)"},{"line_number":105,"context_line":"        expected \u003d \u0027%s:%s\u0027 % (vendor_id, product_id)"},{"line_number":106,"context_line":"        cmd \u003d \"\"\""},{"line_number":107,"context_line":"found_sysfs\u003d0"},{"line_number":108,"context_line":"for dev in /sys/bus/pci/devices/*; do"},{"line_number":109,"context_line":"    if [ -r \"$dev/vendor\" ] \u0026\u0026 [ -r \"$dev/device\" ]; then"}],"source_content_type":"text/x-python","patch_set":4,"id":"aa2178ad_e6bfcc1d","line":106,"updated":"2026-07-14 15:41:47.000000000","message":"I expect this functionality will be reused for several drivers (PCI, NVME and MDEV at least), it would be good to make it reusable, although we could do that in a followup when we add new additional tests that can use it","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"bb485af79c0b4f1166d90733c180683bdacd6060","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        vendor_id \u003d self._normalize_pci_id(CONF.cyborg.pci_vendor_id)"},{"line_number":104,"context_line":"        product_id \u003d self._normalize_pci_id(CONF.cyborg.pci_product_id)"},{"line_number":105,"context_line":"        expected \u003d \u0027%s:%s\u0027 % (vendor_id, product_id)"},{"line_number":106,"context_line":"        cmd \u003d \"\"\""},{"line_number":107,"context_line":"found_sysfs\u003d0"},{"line_number":108,"context_line":"for dev in /sys/bus/pci/devices/*; do"},{"line_number":109,"context_line":"    if [ -r \"$dev/vendor\" ] \u0026\u0026 [ -r \"$dev/device\" ]; then"}],"source_content_type":"text/x-python","patch_set":4,"id":"d945870c_54b1c386","line":106,"in_reply_to":"a63ba18c_a8e05405","updated":"2026-07-15 13:20:50.000000000","message":"Acknowledged","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"455acdf90fb03ae63ade7d21110870efbfeb5034","unresolved":true,"context_lines":[{"line_number":103,"context_line":"        vendor_id \u003d self._normalize_pci_id(CONF.cyborg.pci_vendor_id)"},{"line_number":104,"context_line":"        product_id \u003d self._normalize_pci_id(CONF.cyborg.pci_product_id)"},{"line_number":105,"context_line":"        expected \u003d \u0027%s:%s\u0027 % (vendor_id, product_id)"},{"line_number":106,"context_line":"        cmd \u003d \"\"\""},{"line_number":107,"context_line":"found_sysfs\u003d0"},{"line_number":108,"context_line":"for dev in /sys/bus/pci/devices/*; do"},{"line_number":109,"context_line":"    if [ -r \"$dev/vendor\" ] \u0026\u0026 [ -r \"$dev/device\" ]; then"}],"source_content_type":"text/x-python","patch_set":4,"id":"a63ba18c_a8e05405","line":106,"in_reply_to":"aa2178ad_e6bfcc1d","updated":"2026-07-14 16:44:31.000000000","message":"yes we will likelty factor it out into a util function later","commit_id":"e1557795df5a83bd21b159c2e849c5a16f7b62a3"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"4561b67e1411f4921b347e0cf95e3be761e37f31","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        self._assert_server_pci_ready(server, keypair)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    @decorators.idempotent_id(\u00271b5baf1e-b97d-48cf-8ee7-b3e99b407b4c\u0027)"},{"line_number":267,"context_line":"    @utils.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":268,"context_line":"    def test_rebuild_server_with_pci_driver_device(self):"},{"line_number":269,"context_line":"        server, keypair \u003d self._create_pci_server()"},{"line_number":270,"context_line":"        self.rebuild_server("}],"source_content_type":"text/x-python","patch_set":5,"id":"a1e00428_22f7d3a3","line":267,"updated":"2026-07-15 09:33:25.000000000","message":"The test_rebuild_server_with_pci_driver_device test uses @utils.services(\u0027compute\u0027, \u0027network\u0027) but calls self.rebuild_server() which internally accesses self.image_client to look up the image. The \u0027image\u0027 service should be declared so the test is properly skipped when the image service is unavail...\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If the image service is disabled in a deployment, this test will not be skipped. Instead it will proceed past the services skip check and fail with a confusing error when self.rebuild_server tries to access self.image_client.\n\n**Suggestion**:\nAdd \u0027image\u0027 to the decorator: @utils.services(\u0027compute\u0027, \u0027network\u0027, \u0027image\u0027)","commit_id":"2646e99204653419db710c4bc5f078464498e873"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"f193bbb1d98b129223fb97ce778809a156a10f5e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        params \u003d {\u0027instance\u0027: server_id}"},{"line_number":57,"context_line":"        if bind_state:"},{"line_number":58,"context_line":"            params[\u0027bind_state\u0027] \u003d bind_state"},{"line_number":59,"context_line":"        return self.os_admin.cyborg_client.list_accelerator_request("},{"line_number":60,"context_line":"            params\u003dparams)[\u0027arqs\u0027]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _get_bound_pci_arq(self, server_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"77d63879_62836118","line":59,"updated":"2026-07-15 13:06:28.000000000","message":"The commit message states the tests verify \u0027Cyborg microversion 2.4 attach handle data\u0027, and microversion parameter support was added to list_accelerator_request and get_accelerator_request, but the test code never passes microversion\u003d\u00272.4\u0027. _list_instance_arqs calls list_accelerator_request(para...\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: If the Cyborg API only returns PCI-specific attach_handle_info (domain, bus, device, function fields) at microversion 2.4 or later, the assertions in _assert_pci_arq will fail with KeyError or AssertionError when those fields are absent. Even if the default API version happens to return the field...\n\n**Priority**: Before merge\n**Why This Matters**: If the Cyborg API only returns PCI-specific attach_handle_info (domain, bus, device, function fields) at microversion 2.4 or later, the assertions in _assert_pci_arq will fail with KeyError or AssertionError when those fields are absent. Even if the default API version happens to return the field...\n\n**Recommendation**:\nPass microversion\u003d\u00272.4\u0027 to the list_accelerator_request call in _list_instance_arqs. For example: self.os_admin.cyborg_client.list_accelerator_request(params\u003dparams, microversion\u003d\u00272.4\u0027). Alternatively, define a class-level constant for the microversion and use it consistently.","commit_id":"d8b3990a0e653c3fa6ef05ea7733bf9c12fee46b"}]}
