)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"e30889a417d1243ff6e80e53075abfdfc90531af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f51cdd86_2d9038c0","updated":"2026-07-21 12:44:58.000000000","message":"It will address the current ipv6 job pci lifecycle reboot tempest failure.","commit_id":"e98dfff4bacdaeffe1fa79d3cfd5f2e28002cd98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d4024fc950b5ab5ea439def1040f79cde435b292","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8560ca94_c2a35336","updated":"2026-07-21 12:07:48.000000000","message":"im ok with the curret form but happy to re reivew if you respine","commit_id":"e98dfff4bacdaeffe1fa79d3cfd5f2e28002cd98"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"eba607ae42a0c9d4e8639badb9344d301b69fee2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f1a27fc1_be1cd213","updated":"2026-07-21 14:18:36.000000000","message":"recheck to assume ipv6 still failrs or not","commit_id":"e98dfff4bacdaeffe1fa79d3cfd5f2e28002cd98"}],"cyborg_tempest_plugin/tests/scenario/test_pci_driver_lifecycle.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"20f053009b2eaa961bc6a6831e6d99cf8ea4be59","unresolved":true,"context_lines":[{"line_number":139,"context_line":"            name\u003d\u0027cyborg-pci-lifecycle-test\u0027,"},{"line_number":140,"context_line":"            image_id\u003dCONF.compute.image_ref,"},{"line_number":141,"context_line":"            flavor\u003dflavor,"},{"line_number":142,"context_line":"            wait_until\u003d\u0027SSHABLE\u0027)"},{"line_number":143,"context_line":"        arq \u003d self._wait_for_bound_pci_arq(server[\u0027id\u0027])"},{"line_number":144,"context_line":"        self._assert_pci_arq(arq, server[\u0027id\u0027])"},{"line_number":145,"context_line":"        return server, keypair"}],"source_content_type":"text/x-python","patch_set":2,"id":"6e793453_2cdc9d04","line":142,"updated":"2026-07-17 17:33:08.000000000","message":"you note that we are waiting for the vm to be sshable using tempest built in support.\n\ni thinks we shoudl be able to reuse that underlying support below.\n\nthere is a compute.wait_for_ssh_or_ping helper\n\n\nhttps://github.com/openstack/tempest/blob/406633de5471ef4834c65d2ec5a682d3251251a7/tempest/api/compute/base.py#L471-L479\n\n```\ncompute.wait_for_ssh_or_ping(\n                server, self.os_primary, tenant_network,\n                True, validation_resources, wait_until, True)\n```\n\nwhich is defied here\n\nhttps://github.com/openstack/tempest/blob/master/tempest/common/compute.py#L113-L153\n\nso i woudl use that instead below","commit_id":"e1a0c504aa900ef18cb20781095c14b16f0ae91d"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"06585d200866e4418b7a5e911ce957714c14a00e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            name\u003d\u0027cyborg-pci-lifecycle-test\u0027,"},{"line_number":140,"context_line":"            image_id\u003dCONF.compute.image_ref,"},{"line_number":141,"context_line":"            flavor\u003dflavor,"},{"line_number":142,"context_line":"            wait_until\u003d\u0027SSHABLE\u0027)"},{"line_number":143,"context_line":"        arq \u003d self._wait_for_bound_pci_arq(server[\u0027id\u0027])"},{"line_number":144,"context_line":"        self._assert_pci_arq(arq, server[\u0027id\u0027])"},{"line_number":145,"context_line":"        return server, keypair"}],"source_content_type":"text/x-python","patch_set":2,"id":"5deef59d_9eb3470d","line":142,"in_reply_to":"6e793453_2cdc9d04","updated":"2026-07-20 10:14:21.000000000","message":"Done","commit_id":"e1a0c504aa900ef18cb20781095c14b16f0ae91d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a20babc5d27c0c7f58499c54faf9a929c86d2623","unresolved":true,"context_lines":[{"line_number":162,"context_line":"    def _assert_server_pci_ready(self, server, keypair):"},{"line_number":163,"context_line":"        arq \u003d self._wait_for_bound_pci_arq(server[\u0027id\u0027])"},{"line_number":164,"context_line":"        self._assert_pci_arq(arq, server[\u0027id\u0027])"},{"line_number":165,"context_line":"        waiters.wait_for_server_status("},{"line_number":166,"context_line":"            self.servers_client, server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":167,"context_line":"        ssh_client \u003d self._get_ssh_client(server, keypair)"},{"line_number":168,"context_line":"        self._assert_guest_has_pci_device(ssh_client)"},{"line_number":169,"context_line":"        return ssh_client"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def _reboot_server(self, server, reboot_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"f4732b0d_9003a4da","line":168,"range":{"start_line":165,"start_character":1,"end_line":168,"end_character":53},"updated":"2026-07-17 17:43:55.000000000","message":"```suggestion\n        ssh_client \u003d self._get_ssh_client(server, keypair)\n        waiters.wait_for_ssh(ssh_client)\n        self._assert_guest_has_pci_device(ssh_client)\n```","commit_id":"e1a0c504aa900ef18cb20781095c14b16f0ae91d"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"06585d200866e4418b7a5e911ce957714c14a00e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def _assert_server_pci_ready(self, server, keypair):"},{"line_number":163,"context_line":"        arq \u003d self._wait_for_bound_pci_arq(server[\u0027id\u0027])"},{"line_number":164,"context_line":"        self._assert_pci_arq(arq, server[\u0027id\u0027])"},{"line_number":165,"context_line":"        waiters.wait_for_server_status("},{"line_number":166,"context_line":"            self.servers_client, server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":167,"context_line":"        ssh_client \u003d self._get_ssh_client(server, keypair)"},{"line_number":168,"context_line":"        self._assert_guest_has_pci_device(ssh_client)"},{"line_number":169,"context_line":"        return ssh_client"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def _reboot_server(self, server, reboot_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2cc10bfc_3c653022","line":168,"range":{"start_line":165,"start_character":1,"end_line":168,"end_character":53},"in_reply_to":"f4732b0d_9003a4da","updated":"2026-07-20 10:14:21.000000000","message":"Done","commit_id":"e1a0c504aa900ef18cb20781095c14b16f0ae91d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a20babc5d27c0c7f58499c54faf9a929c86d2623","unresolved":true,"context_lines":[{"line_number":207,"context_line":"            ssh_client.exec_command(\u0027sudo reboot\u0027)"},{"line_number":208,"context_line":"        except lib_exc.SSHExecCommandFailed:"},{"line_number":209,"context_line":"            pass"},{"line_number":210,"context_line":"        ssh_ip \u003d self.get_server_ip(server)"},{"line_number":211,"context_line":"        if not test_utils.call_until_true("},{"line_number":212,"context_line":"                lambda: not self._is_ssh_reachable(ssh_ip),"},{"line_number":213,"context_line":"                CONF.compute.build_timeout,"},{"line_number":214,"context_line":"                CONF.compute.build_interval):"},{"line_number":215,"context_line":"            self.fail("},{"line_number":216,"context_line":"                \u0027Server %s did not start rebooting after \u0027"},{"line_number":217,"context_line":"                \u0027guest reboot command\u0027 % server[\u0027id\u0027])"},{"line_number":218,"context_line":"        self._assert_server_pci_ready(server, keypair)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @decorators.idempotent_id(\u00272da4cd2d-1a58-4347-8f51-98b65e3b853a\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f7525e9e_e5a9c718","line":217,"range":{"start_line":210,"start_character":0,"end_line":217,"end_character":54},"updated":"2026-07-17 17:43:55.000000000","message":"```suggestion\n        try:\n            waiters.wait_for_ssh(ssh_client)\n        excpet lib_exc.TimeoutException:\n            self.fail(\n                \u0027Server %s did not start rebooting after \u0027\n                \u0027guest reboot command\u0027 % server[\u0027id\u0027])\n```\n\nor just \n```\nwaiters.wait_for_ssh(ssh_client)\n```\nthat iwll throw TimeoutException and fail  the test properly\n\ni think just the wait_for_ssh call is the cleanest","commit_id":"e1a0c504aa900ef18cb20781095c14b16f0ae91d"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"06585d200866e4418b7a5e911ce957714c14a00e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            ssh_client.exec_command(\u0027sudo reboot\u0027)"},{"line_number":208,"context_line":"        except lib_exc.SSHExecCommandFailed:"},{"line_number":209,"context_line":"            pass"},{"line_number":210,"context_line":"        ssh_ip \u003d self.get_server_ip(server)"},{"line_number":211,"context_line":"        if not test_utils.call_until_true("},{"line_number":212,"context_line":"                lambda: not self._is_ssh_reachable(ssh_ip),"},{"line_number":213,"context_line":"                CONF.compute.build_timeout,"},{"line_number":214,"context_line":"                CONF.compute.build_interval):"},{"line_number":215,"context_line":"            self.fail("},{"line_number":216,"context_line":"                \u0027Server %s did not start rebooting after \u0027"},{"line_number":217,"context_line":"                \u0027guest reboot command\u0027 % server[\u0027id\u0027])"},{"line_number":218,"context_line":"        self._assert_server_pci_ready(server, keypair)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @decorators.idempotent_id(\u00272da4cd2d-1a58-4347-8f51-98b65e3b853a\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8218b535_885da0e0","line":217,"range":{"start_line":210,"start_character":0,"end_line":217,"end_character":54},"in_reply_to":"f7525e9e_e5a9c718","updated":"2026-07-20 10:14:21.000000000","message":"Done","commit_id":"e1a0c504aa900ef18cb20781095c14b16f0ae91d"},{"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":"0b1d11483c588371b38189d659d9a039b49346a5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import socket"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common import compute"},{"line_number":19,"context_line":"from tempest.common import utils"}],"source_content_type":"text/x-python","patch_set":3,"id":"88343077_fe47e729","line":16,"updated":"2026-07-20 10:14:24.000000000","message":"The patch adds `import socket` at the top of the file but the socket module is never used anywhere in the module. The import was likely intended for checking SSH port reachability (the stated goal of the commit) but was left unused when the implementation switched to waiters.wait_for_ssh.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Unused import will be flagged by flake8/Hacking (F401), potentially failing CI lint checks. It also signals incomplete implementation — the socket module was intended for port-reachability verification but that logic was never written.\n\n**Suggestion**:\nRemove the unused `import socket` line, or implement the intended port-unreachability check using socket (e.g., socket.connect_ex to verify the SSH port goes down during reboot).","commit_id":"c933618abe98776034758247b5be685d96aadceb"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0c043e50f2d026dbeab5adfcfe3f3db13f9d83ec","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import socket"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common import compute"},{"line_number":19,"context_line":"from tempest.common import utils"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f8ac3f7_9648b04c","line":16,"updated":"2026-07-20 10:57:44.000000000","message":"pep8: F401 \u0027socket\u0027 imported but unused","commit_id":"c933618abe98776034758247b5be685d96aadceb"},{"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":"0b1d11483c588371b38189d659d9a039b49346a5","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            ssh_client.exec_command(\u0027sudo reboot\u0027)"},{"line_number":197,"context_line":"        except lib_exc.SSHExecCommandFailed:"},{"line_number":198,"context_line":"            pass"},{"line_number":199,"context_line":"        try:"},{"line_number":200,"context_line":"            waiters.wait_for_ssh(ssh_client)"},{"line_number":201,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":202,"context_line":"            self.fail("}],"source_content_type":"text/x-python","patch_set":3,"id":"65cfb422_7de84b9d","line":199,"updated":"2026-07-20 10:14:24.000000000","message":"The commit says it will \u0027poll until the SSH port becomes unreachable\u0027 to confirm reboot started. However, waiters.wait_for_ssh polls until SSH becomes AVAILABLE, not unavailable. If the guest has not started shutting down, SSH is still reachable and wait_for_ssh returns immediately on the first p...\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: The race condition described in the commit message is not reliably closed. If the guest reboot is delayed, _assert_server_pci_ready may assert PCI device survival against the pre-reboot state, producing a false-positive pass. The misleading fail message also confuses debugging when the test fails.\n\n**Priority**: Before merge\n**Why This Matters**: The race condition described in the commit message is not reliably closed. If the guest reboot is delayed, _assert_server_pci_ready may assert PCI device survival against the pre-reboot state, producing a false-positive pass. The misleading fail message also confuses debugging when the test fails.\n\n**Recommendation**:\nAdd an explicit check that the SSH port becomes unreachable before waiting for it to come back. Use test_utils.call_until_true with a socket.connect_ex-based check (the socket import suggests this intent) to confirm the port goes down, then call wait_for_ssh to wait for the machine to return.","commit_id":"c933618abe98776034758247b5be685d96aadceb"},{"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":"82627efca205c07d5987fa8e14df6d1cde30bd39","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        try:"},{"line_number":198,"context_line":"            waiters.wait_for_ssh(ssh_client)"},{"line_number":199,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":200,"context_line":"            self.fail("},{"line_number":201,"context_line":"                f\"Server {server[\u0027id\u0027]} did not start rebooting after guest \""},{"line_number":202,"context_line":"                \"reboot command\""},{"line_number":203,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":4,"id":"127d7a0e_d1fe455b","line":200,"updated":"2026-07-21 08:01:29.000000000","message":"The TimeoutException handler after \u0027sudo reboot\u0027 reports \u0027did not start rebooting\u0027, but wait_for_ssh timing out means the guest never became reachable again (i.e., it finished rebooting but failed to come back, or is still down). The message conveys the opposite of the actual failure condition.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: When a test failure occurs, the message \u0027did not start rebooting\u0027 will mislead developers into investigating the reboot command rather than the guest\u0027s failure to recover post-reboot. This wastes debugging time and obscures the real issue.\n\n**Recommendation**:\nChange the message to reflect that the guest did not become reachable again after reboot, e.g.: f\"Server {server[\u0027id\u0027]} did not become reachable after guest reboot\"","commit_id":"e98dfff4bacdaeffe1fa79d3cfd5f2e28002cd98"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d4024fc950b5ab5ea439def1040f79cde435b292","unresolved":true,"context_lines":[{"line_number":197,"context_line":"        try:"},{"line_number":198,"context_line":"            waiters.wait_for_ssh(ssh_client)"},{"line_number":199,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":200,"context_line":"            self.fail("},{"line_number":201,"context_line":"                f\"Server {server[\u0027id\u0027]} did not start rebooting after guest \""},{"line_number":202,"context_line":"                \"reboot command\""},{"line_number":203,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":4,"id":"280d6586_4d816abd","line":200,"in_reply_to":"127d7a0e_d1fe455b","updated":"2026-07-21 12:07:48.000000000","message":"i guess we could rephase it.\n\n```\n f\"Server {server[\u0027id\u0027]} did not become sshable after guest \"\n f\"reboot command\"\n```","commit_id":"e98dfff4bacdaeffe1fa79d3cfd5f2e28002cd98"}]}
