)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"298b81b983ac5206d73d3c9fc1239640d7dde518","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"65ad8f8f_71e1d41f","updated":"2026-09-18 10:59:35.000000000","message":"Hi Lee, thanks for your contribution.\n\nCI still running but could you expand your commit message to explain:\n\nWhat is QSAN? (Brief background)\nKey features enabled\nConfiguration requirements\nLinks to QSAN documentation","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"}],"cinder/tests/unit/volume/drivers/qsan/__init__.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"0b29bee6_12a95739","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H104: File contains nothing but comments","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b80674a9_03a94f98","line":8,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: W391 blank line at end of file","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfca085f_4b26cb9c","line":1,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H104: File contains nothing but comments","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6c4bcadd_5eb24427","line":8,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: W391 blank line at end of file","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/conftest.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"\"\"\"Load this checkout under Cinder\u0027s canonical driver and test packages.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"28087a1b_74e54fe5","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@pytest.fixture(autouse\u003dTrue)"},{"line_number":20,"context_line":"def isolated_configuration():"},{"line_number":21,"context_line":"    \"\"\"Do not leak backup or lock overrides between protocol test cases.\"\"\""},{"line_number":22,"context_line":"    cfg.CONF.set_override(\u0027lock_path\u0027, \u0027/tmp\u0027, group\u003d\u0027oslo_concurrency\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d8d863ab_dac12298","line":19,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E303 too many blank lines (3)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"}],"cinder/tests/unit/volume/drivers/qsan/fakes.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"26a52ace_55739017","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"7904dfa1_519a6e63","line":1,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_backup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"1843b20b_9e8c3f41","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"from cinder import objects"},{"line_number":18,"context_line":"from cinder.volume.drivers.qsan import qsan_backup"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"95186774_9fde0a95","line":17,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F401 \u0027cinder.objects\u0027 imported but unused","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ORIGINAL_BACKUP_REST_HELPERS \u003d qsan_backup.BackupRestHelpers"}],"source_content_type":"text/x-python","patch_set":1,"id":"2f569696_9978dde5","line":22,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I202 Additional newline in a group of imports. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027from cinder.volume.drivers.qsan import qsan_iscsi\u0027 is identified as Application.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        attach_info \u003d {\u0027device\u0027: {\u0027path\u0027: \u0027/dev/fakebackup\u0027}}"},{"line_number":142,"context_line":"        self.driver._attach_backup_device.return_value \u003d attach_info"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls, \\"},{"line_number":145,"context_line":"                mock.patch.object("},{"line_number":146,"context_line":"                    qsan_backup.volume_utils,"},{"line_number":147,"context_line":"                    \u0027brick_get_connector_properties\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"33b853fc_f8f8a347","line":144,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (91 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        volume \u003d self._fake_volume(vol_id\u003dbackup.volume_id, size\u003dbackup.size)"},{"line_number":167,"context_line":"        self.driver._backup_create_volume.side_effect \u003d Exception(\u0027boom\u0027)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls:"},{"line_number":170,"context_line":"            volume_cls.get_by_id.return_value \u003d volume"},{"line_number":171,"context_line":"            self.assertRaises(exception.BackupDriverException,"},{"line_number":172,"context_line":"                              self.driver.backup, backup, mock.Mock())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9acdfc01_66712197","line":169,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (89 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    def test_backup_attach_failure_deletes_backend_backup_volume(self):"},{"line_number":178,"context_line":"        backup \u003d FakeBackup(container\u003dNone)"},{"line_number":179,"context_line":"        volume \u003d self._fake_volume(vol_id\u003dbackup.volume_id, size\u003dbackup.size)"},{"line_number":180,"context_line":"        self.driver._attach_backup_device.side_effect \u003d Exception(\u0027attach failed\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls, \\"},{"line_number":183,"context_line":"                mock.patch.object("}],"source_content_type":"text/x-python","patch_set":1,"id":"b28604b0_f87b7a67","line":180,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        volume \u003d self._fake_volume(vol_id\u003dbackup.volume_id, size\u003dbackup.size)"},{"line_number":180,"context_line":"        self.driver._attach_backup_device.side_effect \u003d Exception(\u0027attach failed\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls, \\"},{"line_number":183,"context_line":"                mock.patch.object("},{"line_number":184,"context_line":"                    qsan_backup.volume_utils,"},{"line_number":185,"context_line":"                    \u0027brick_get_connector_properties\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"25f7e513_5a9a3087","line":182,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (91 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        self.driver._helpers.set_volume_property.assert_called_once_with("},{"line_number":270,"context_line":"            \u0027cinder-abcdef123456\u0027, {\u0027new_name\u0027: \u0027cinder-123456789abc\u0027})"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def test_update_migrated_volume_same_backend_existing_name_falls_back(self):"},{"line_number":273,"context_line":"        volume \u003d self._make_volume("},{"line_number":274,"context_line":"            \u0027src-vol\u0027, \u0027storage@u710_pool01#Pool_01\u0027,"},{"line_number":275,"context_line":"            name\u003d\u0027volume-123456789abc\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b6f8645_655b2888","line":272,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"39768ad0_9c19ba7a","line":1,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"from cinder import objects"},{"line_number":18,"context_line":"from cinder.volume.drivers.qsan import qsan_backup"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":2,"id":"26ce84f2_06e2a320","line":17,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F401 \u0027cinder.objects\u0027 imported but unused","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ORIGINAL_BACKUP_REST_HELPERS \u003d qsan_backup.BackupRestHelpers"}],"source_content_type":"text/x-python","patch_set":2,"id":"90cfcdc4_c2df80ea","line":22,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I202 Additional newline in a group of imports. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027from cinder.volume.drivers.qsan import qsan_iscsi\u0027 is identified as Application.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        attach_info \u003d {\u0027device\u0027: {\u0027path\u0027: \u0027/dev/fakebackup\u0027}}"},{"line_number":142,"context_line":"        self.driver._attach_backup_device.return_value \u003d attach_info"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls, \\"},{"line_number":145,"context_line":"                mock.patch.object("},{"line_number":146,"context_line":"                    qsan_backup.volume_utils,"},{"line_number":147,"context_line":"                    \u0027brick_get_connector_properties\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"d3ffb455_b92551d8","line":144,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E501 line too long (91 \u003e 79 characters)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        volume \u003d self._fake_volume(vol_id\u003dbackup.volume_id, size\u003dbackup.size)"},{"line_number":167,"context_line":"        self.driver._backup_create_volume.side_effect \u003d Exception(\u0027boom\u0027)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls:"},{"line_number":170,"context_line":"            volume_cls.get_by_id.return_value \u003d volume"},{"line_number":171,"context_line":"            self.assertRaises(exception.BackupDriverException,"},{"line_number":172,"context_line":"                              self.driver.backup, backup, mock.Mock())"}],"source_content_type":"text/x-python","patch_set":2,"id":"d102e273_a22f3b39","line":169,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E501 line too long (89 \u003e 79 characters)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    def test_backup_attach_failure_deletes_backend_backup_volume(self):"},{"line_number":178,"context_line":"        backup \u003d FakeBackup(container\u003dNone)"},{"line_number":179,"context_line":"        volume \u003d self._fake_volume(vol_id\u003dbackup.volume_id, size\u003dbackup.size)"},{"line_number":180,"context_line":"        self.driver._attach_backup_device.side_effect \u003d Exception(\u0027attach failed\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls, \\"},{"line_number":183,"context_line":"                mock.patch.object("}],"source_content_type":"text/x-python","patch_set":2,"id":"7da1ecb6_cef7b7ef","line":180,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        volume \u003d self._fake_volume(vol_id\u003dbackup.volume_id, size\u003dbackup.size)"},{"line_number":180,"context_line":"        self.driver._attach_backup_device.side_effect \u003d Exception(\u0027attach failed\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        with mock.patch.object(qsan_backup.objects, \u0027Volume\u0027, create\u003dTrue) as volume_cls, \\"},{"line_number":183,"context_line":"                mock.patch.object("},{"line_number":184,"context_line":"                    qsan_backup.volume_utils,"},{"line_number":185,"context_line":"                    \u0027brick_get_connector_properties\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"36fe33a6_10b2fcf9","line":182,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E501 line too long (91 \u003e 79 characters)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        self.driver._helpers.set_volume_property.assert_called_once_with("},{"line_number":270,"context_line":"            \u0027cinder-abcdef123456\u0027, {\u0027new_name\u0027: \u0027cinder-123456789abc\u0027})"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def test_update_migrated_volume_same_backend_existing_name_falls_back(self):"},{"line_number":273,"context_line":"        volume \u003d self._make_volume("},{"line_number":274,"context_line":"            \u0027src-vol\u0027, \u0027storage@u710_pool01#Pool_01\u0027,"},{"line_number":275,"context_line":"            name\u003d\u0027volume-123456789abc\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aec8d98_64329b8e","line":272,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_common.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"b1c9f8fd_0c53b09c","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"import json"},{"line_number":10,"context_line":"import math"},{"line_number":11,"context_line":"from unittest import mock"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"fc1463d0_c99ad5c0","line":10,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F401 \u0027math\u0027 imported but unused","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_utils import units"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"012995b3_7cebfa7d","line":17,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder import exception\u0027 and in a different group.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_utils import units"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"a60b7870_0d5d5b01","line":17,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder import exception\u0027 is identified as Application.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":21,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b902f45_e641786d","line":18,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":21,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"}],"source_content_type":"text/x-python","patch_set":1,"id":"5e7aff6d_5006af3e","line":18,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"7bee1f60_13944fa6","line":1,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"import json"},{"line_number":10,"context_line":"import math"},{"line_number":11,"context_line":"from unittest import mock"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"ae30da0f_4ec39654","line":10,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F401 \u0027math\u0027 imported but unused","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_utils import units"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":2,"id":"630faee1_0b45fc62","line":17,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder import exception\u0027 and in a different group.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from oslo_utils import units"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":2,"id":"126cad89_7e032283","line":17,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder import exception\u0027 is identified as Application.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":21,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"}],"source_content_type":"text/x-python","patch_set":2,"id":"ae150526_77362c61","line":18,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import exception"},{"line_number":17,"context_line":"import unittest as test"},{"line_number":18,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":19,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":20,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":21,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ef3a7a5_a7d9bb41","line":18,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_iscsi.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a30a323_5cf1dd1c","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"from oslo_config import cfg"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"cceddbba_768ce1c8","line":14,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder import exception\u0027 and in a different group.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"from oslo_config import cfg"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfc0c675_13f1ada8","line":14,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder import exception\u0027 is identified as Application.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"99f147a1_6f339057","line":15,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4c6d52b2_7a45229d","line":15,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"b741feff_b9df4d47","line":1,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":11,"context_line":"from oslo_config import cfg"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":2,"id":"fe21612c_b8d9a618","line":14,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder import exception\u0027 and in a different group.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":11,"context_line":"from oslo_config import cfg"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"}],"source_content_type":"text/x-python","patch_set":2,"id":"089e6f3d_5cab76dc","line":14,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder import exception\u0027 is identified as Application.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"2b0e1719_528f38c9","line":15,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import exception"},{"line_number":14,"context_line":"import unittest as test"},{"line_number":15,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":16,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":17,"context_line":"from cinder.volume.drivers.qsan import qsan_iscsi"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"a428c8a5_6a1632b6","line":15,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_nvme.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from unittest import mock"}],"source_content_type":"text/x-python","patch_set":1,"id":"e41bb801_7fa5d879","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@pytest.mark.parametrize(\u0027options\u0027, ["},{"line_number":41,"context_line":"    {\u0027qsan_os\u0027: \u0027XEVO2\u0027}, {\u0027qsan_nvme_host_group\u0027: None},"},{"line_number":42,"context_line":"    {\u0027qsan_multiattach\u0027: True}, {\u0027replication_device\u0027: [{\u0027backend_id\u0027: \u0027slave\u0027}]},"},{"line_number":43,"context_line":"])"},{"line_number":44,"context_line":"def test_nvme_rejects_unsupported_configuration(options):"},{"line_number":45,"context_line":"    config \u003d dict(qsan_nvme_host_group\u003dGROUP)"}],"source_content_type":"text/x-python","patch_set":1,"id":"12304cbe_814b7aa4","line":42,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        qsan_nvme.QsanNVMeDriver(configuration\u003dfakes.make_config(**config))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"@pytest.mark.parametrize(\u0027connector\u0027, [None, {}, {\u0027nqn\u0027: \u0027\u0027}, {\u0027initiator\u0027: \u0027iqn.x\u0027}])"},{"line_number":52,"context_line":"def test_connector_requires_nqn(driver, connector):"},{"line_number":53,"context_line":"    with pytest.raises(exception.InvalidConnectorException):"},{"line_number":54,"context_line":"        driver.initialize_connection(VOLUME, connector)"}],"source_content_type":"text/x-python","patch_set":1,"id":"988513e4_b6ca8dc8","line":51,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (86 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    assert stats[\u0027storage_protocol\u0027] \u003d\u003d \u0027NVMe-TCP\u0027"},{"line_number":194,"context_line":"    pool \u003d stats[\u0027pools\u0027][0]"},{"line_number":195,"context_line":"    assert pool[\u0027total_capacity_gb\u0027] \u003d\u003d 10"},{"line_number":196,"context_line":"    for feature in (\u0027multiattach\u0027, \u0027replication_enabled\u0027, \u0027online_extend_support\u0027):"},{"line_number":197,"context_line":"        assert pool[feature] is False"}],"source_content_type":"text/x-python","patch_set":1,"id":"adb1eb3b_9adc6daa","line":196,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":"        self.assertEqual(\u0027NVMe-TCP\u0027, instance.protocol)"},{"line_number":63,"context_line":"        self.assertEqual(\u0027NVMeTCP\u0027, instance._get_protocol_for_api())"},{"line_number":64,"context_line":"        self.assertTrue("},{"line_number":65,"context_line":"            isinstance(instance._helpers.client, qsan_rest.QsanRest)"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        self.assertIs(instance._slave.is_enable, False)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d1763d64_1b68f14c","line":64,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H211: Use assert{Is,IsNot}instance","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        driver \u003d self.driver"},{"line_number":157,"context_line":"        driver._helpers.create_volume.return_value \u003d {\u0027arr\u0027: {}}"},{"line_number":158,"context_line":"        volume \u003d fakes.fake_volume()"},{"line_number":159,"context_line":"        self.assertIs(driver.create_volume(volume), None)"},{"line_number":160,"context_line":"        driver._helpers.create_volume.assert_called_once_with("},{"line_number":161,"context_line":"            driver._convert_name(volume.name), \u00273\u0027, \u0027GB\u0027, \u0027Pool_01\u0027, \u0027NVMeTCP\u0027"},{"line_number":162,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff2561a3_73d462b6","line":159,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def test_unmanage_preserves_backend_resources(self):"},{"line_number":373,"context_line":"        driver \u003d self.driver"},{"line_number":374,"context_line":"        self.assertIs(driver.unmanage(VOLUME), None)"},{"line_number":375,"context_line":"        self.assertEqual([], driver._helpers.mock_calls)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def test_manage_rename_failure_propagates(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"069c72d6_b8c90a89","line":374,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_nvme_backup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"import contextlib"}],"source_content_type":"text/x-python","patch_set":1,"id":"c738ce44_df73b731","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"from cinder import exception"},{"line_number":11,"context_line":"from cinder.volume.drivers.qsan import qsan_backup"},{"line_number":12,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"GROUP \u003d \u0027cinder-backup-nvme\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"eba4fd1d_8688fce1","line":13,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (cinder.volume.drivers.qsan.qsan_rest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    for name, value in {"},{"line_number":28,"context_line":"        \u0027backup_protocol\u0027: \u0027nvme\u0027, \u0027backup_qsan_os\u0027: \u0027QSM4\u0027,"},{"line_number":29,"context_line":"        \u0027backup_nvme_host_group\u0027: GROUP, \u0027backup_pool\u0027: \u0027Pool_01\u0027,"},{"line_number":30,"context_line":"        \u0027backup_management_ip\u0027: \u0027192.168.1.100\u0027, \u0027backup_login_account\u0027: \u0027admin\u0027,"},{"line_number":31,"context_line":"        \u0027backup_login_password\u0027: \u0027test-password\u0027,"},{"line_number":32,"context_line":"        \u0027backup_import_export_support\u0027: False,"},{"line_number":33,"context_line":"    }.items():"}],"source_content_type":"text/x-python","patch_set":1,"id":"f45898c0_4f36ed93","line":30,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def test_backup_attach_always_validates_mapping_not_cached_lun(driver):"},{"line_number":84,"context_line":"    driver._backup_lun_id \u003d \u0027old-iscsi-lun\u0027"},{"line_number":85,"context_line":"    driver._helpers._client.initialize_nvme_connection.return_value \u003d CONNECTION"},{"line_number":86,"context_line":"    assert driver._initialize_connection(BACKUP, CONNECTOR) \u003d\u003d CONNECTION"},{"line_number":87,"context_line":"    driver._helpers._client.initialize_nvme_connection.assert_called_once_with("},{"line_number":88,"context_line":"        \u0027cinder-123456789abc\u0027, CONNECTOR[\u0027nqn\u0027], GROUP)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2e06cc06_1869340b","line":85,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"@pytest.mark.parametrize(\u0027operation\u0027, [\u0027backup\u0027, \u0027restore\u0027])"},{"line_number":126,"context_line":"@pytest.mark.parametrize(\u0027transfer_error\u0027, [False, True])"},{"line_number":127,"context_line":"def test_backup_restore_transfer_and_cleanup(driver, operation, transfer_error):"},{"line_number":128,"context_line":"    class Backup(dict):"},{"line_number":129,"context_line":"        __getattr__ \u003d dict.__getitem__"},{"line_number":130,"context_line":"        def save(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f5f7d5e7_44edeb57","line":127,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"def test_backup_restore_transfer_and_cleanup(driver, operation, transfer_error):"},{"line_number":128,"context_line":"    class Backup(dict):"},{"line_number":129,"context_line":"        __getattr__ \u003d dict.__getitem__"},{"line_number":130,"context_line":"        def save(self):"},{"line_number":131,"context_line":"            pass"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    backup \u003d Backup(BACKUP, container\u003d\u0027Pool_01\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"31338451_5232b02f","line":130,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E306 expected 1 blank line before a nested definition, found 0","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                              return_value\u003dcontextlib.nullcontext()), \\"},{"line_number":152,"context_line":"            mock.patch.object(qsan_backup, \u0027open\u0027, mock.mock_open(),"},{"line_number":153,"context_line":"                              create\u003dTrue), \\"},{"line_number":154,"context_line":"            mock.patch.object(qsan_backup.tpool, \u0027Proxy\u0027, side_effect\u003dlambda f: f), \\"},{"line_number":155,"context_line":"            mock.patch.object(driver, \u0027_transfer_block_data\u0027,"},{"line_number":156,"context_line":"                              side_effect\u003dside_effect) as transfer:"},{"line_number":157,"context_line":"        volumes.get_by_id.return_value \u003d source"}],"source_content_type":"text/x-python","patch_set":1,"id":"ec135045_84c9897a","line":154,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (85 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            mock.patch.object(driver, \u0027_transfer_block_data\u0027,"},{"line_number":156,"context_line":"                              side_effect\u003dside_effect) as transfer:"},{"line_number":157,"context_line":"        volumes.get_by_id.return_value \u003d source"},{"line_number":158,"context_line":"        def run():"},{"line_number":159,"context_line":"            if operation \u003d\u003d \u0027backup\u0027:"},{"line_number":160,"context_line":"                driver.backup(backup, volume_file)"},{"line_number":161,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5499976d_520b9346","line":158,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E306 expected 1 blank line before a nested definition, found 0","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"def test_failed_brick_connect_cleans_nvme_mapping(driver):"},{"line_number":177,"context_line":"    driver._helpers._client.initialize_nvme_connection.return_value \u003d CONNECTION"},{"line_number":178,"context_line":"    with mock.patch.object(driver, \u0027_connect_device\u0027,"},{"line_number":179,"context_line":"                           side_effect\u003dRuntimeError(\u0027connect failed\u0027)):"},{"line_number":180,"context_line":"        with pytest.raises(RuntimeError, match\u003d\u0027connect failed\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"89e2c577_ac7f7e3b","line":177,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            \u0027cinder.backup.driver.BackupDriver.__init__\u0027, return_value\u003dNone"},{"line_number":74,"context_line":"        ):"},{"line_number":75,"context_line":"            driver \u003d qsan_backup.QsanBackupDriver(None)"},{"line_number":76,"context_line":"        self.assertTrue("},{"line_number":77,"context_line":"            isinstance(driver._helpers, qsan_backup.BackupRestHelpers)"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":"        self.assertTrue("}],"source_content_type":"text/x-python","patch_set":2,"id":"56ad0d57_aacca777","line":76,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H211: Use assert{Is,IsNot}instance","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertTrue("},{"line_number":77,"context_line":"            isinstance(driver._helpers, qsan_backup.BackupRestHelpers)"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":"        self.assertTrue("},{"line_number":80,"context_line":"            isinstance(driver._helpers._client, qsan_rest.QsanRest)"},{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        self.assertEqual(\u0027nvme\u0027, driver._protocol)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a199b999_acec909e","line":79,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H211: Use assert{Is,IsNot}instance","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                \u0027cinder-123456789abc\u0027, \u00273\u0027, \u0027GB\u0027, \u0027Pool_01\u0027,"},{"line_number":114,"context_line":"                protocol\u003d\u0027NVMeTCP\u0027"},{"line_number":115,"context_line":"            )"},{"line_number":116,"context_line":"        self.assertIs(driver._backup_lun_id, None)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_backup_attach_always_validates_mapping_not_cached_lun(self):"},{"line_number":119,"context_line":"        driver \u003d self.driver"}],"source_content_type":"text/x-python","patch_set":2,"id":"dcad853d_dc14c5eb","line":116,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_nvme_rest.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from unittest import mock"}],"source_content_type":"text/x-python","patch_set":1,"id":"b6948891_4c23f51b","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def attach(client):"},{"line_number":57,"context_line":"    return client.initialize_nvme_connection(VOLUME[\u0027name\u0027], NQN, GROUP[\u0027name\u0027])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def test_attach_actual_http_flow_and_namespace_identity(client, session):"}],"source_content_type":"text/x-python","patch_set":1,"id":"97b7078b_b0064a13","line":57,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        \u0027portals\u0027: [(\u002710.0.0.1\u0027, 4420, \u0027tcp\u0027), (\u002710.0.0.2\u0027, 4420, \u0027tcp\u0027)]}}"},{"line_number":66,"context_line":"    calls \u003d session.request.call_args_list"},{"line_number":67,"context_line":"    assert calls[2].args \u003d\u003d (\u0027GET\u0027, fakes.FAKE_API_URL +"},{"line_number":68,"context_line":"                            \u0027/rest/v2/network/ethernet_withoutTxRx\u0027)"},{"line_number":69,"context_line":"    assert calls[3].args \u003d\u003d (\u0027POST\u0027, fakes.FAKE_API_URL +"},{"line_number":70,"context_line":"                            \u0027/inner/cinder/hostgroups/mappingLun\u0027)"},{"line_number":71,"context_line":"    assert calls[3].kwargs[\u0027json\u0027] \u003d\u003d {\u0027id\u0027: 42, \u0027volumeIds\u0027: [789]}"}],"source_content_type":"text/x-python","patch_set":1,"id":"dd441b89_adc5553d","line":68,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    assert calls[2].args \u003d\u003d (\u0027GET\u0027, fakes.FAKE_API_URL +"},{"line_number":68,"context_line":"                            \u0027/rest/v2/network/ethernet_withoutTxRx\u0027)"},{"line_number":69,"context_line":"    assert calls[3].args \u003d\u003d (\u0027POST\u0027, fakes.FAKE_API_URL +"},{"line_number":70,"context_line":"                            \u0027/inner/cinder/hostgroups/mappingLun\u0027)"},{"line_number":71,"context_line":"    assert calls[3].kwargs[\u0027json\u0027] \u003d\u003d {\u0027id\u0027: 42, \u0027volumeIds\u0027: [789]}"},{"line_number":72,"context_line":"    assert \u0027vol_uuid\u0027 not in info[\u0027data\u0027]"},{"line_number":73,"context_line":"    assert session.headers[\u0027Authorization\u0027] \u003d\u003d \u0027token\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"f4715117_2ce76e73","line":70,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"def test_attach_already_mapped_does_not_post(client, session):"},{"line_number":77,"context_line":"    responses(session, [VOLUME], [MAPPED], NETWORK)"},{"line_number":78,"context_line":"    assert attach(client)[\u0027data\u0027][\u0027ns_id\u0027] \u003d\u003d \u00273\u0027"},{"line_number":79,"context_line":"    assert all(call.args[0] \u003d\u003d \u0027GET\u0027 for call in session.request.call_args_list)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"@pytest.mark.parametrize(\u0027groups\u0027, [[], [GROUP, GROUP],"}],"source_content_type":"text/x-python","patch_set":1,"id":"20db24c4_6261b807","line":79,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"@pytest.mark.parametrize(\u0027groups\u0027, [[], [GROUP, GROUP],"},{"line_number":83,"context_line":"                                  [dict(GROUP, protocol\u003d\u0027iSCSI\u0027)],"},{"line_number":84,"context_line":"                                  [dict(GROUP, volumeType\u003d\u0027Share\u0027)],"},{"line_number":85,"context_line":"                                  [dict(GROUP, id\u003dNone)],"},{"line_number":86,"context_line":"                                  [dict(GROUP, name\u003d\u0027other-nvme-group\u0027)]])"}],"source_content_type":"text/x-python","patch_set":1,"id":"6bb85db6_caef9fec","line":83,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"@pytest.mark.parametrize(\u0027hosts\u0027, [[], [{\u0027nqn\u0027: \u0027nqn.other\u0027}]])"},{"line_number":95,"context_line":"def test_attach_rejects_unauthorized_host_without_mutation(client, session, hosts):"},{"line_number":96,"context_line":"    responses(session, [VOLUME], [dict(GROUP, nqnHostList\u003dhosts)])"},{"line_number":97,"context_line":"    with pytest.raises(ERROR, match\u003d\u0027not allowed\u0027):"},{"line_number":98,"context_line":"        attach(client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"677cf9ab_340c19fa","line":95,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    group \u003d dict(MAPPED, nqnHostList\u003d[{\u0027nqn\u0027: \u0027*\u0027}])"},{"line_number":104,"context_line":"    responses(session, [VOLUME], [group], NETWORK)"},{"line_number":105,"context_line":"    assert attach(client)[\u0027data\u0027][\u0027host_nqn\u0027] \u003d\u003d NQN"},{"line_number":106,"context_line":"    assert all(call.args[0] \u003d\u003d \u0027GET\u0027 for call in session.request.call_args_list)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"@pytest.mark.parametrize(\u0027volumes\u0027, [[], [dict(VOLUME, state\u003d\u0027Offline\u0027)]])"}],"source_content_type":"text/x-python","patch_set":1,"id":"a715da73_9d0f2a48","line":106,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"@pytest.mark.parametrize(\u0027targets\u0027, [[], [{\u0027nqn\u0027: \u0027-\u0027}],"},{"line_number":118,"context_line":"                                   [{\u0027nqn\u0027: TARGET}, {\u0027nqn\u0027: TARGET + \u0027other\u0027}]])"},{"line_number":119,"context_line":"def test_ambiguous_subsystems_rejected(client, session, targets):"},{"line_number":120,"context_line":"    responses(session, [VOLUME], [dict(GROUP, nvmeTcpTargetList\u003dtargets)])"},{"line_number":121,"context_line":"    with pytest.raises(ERROR, match\u003d\u0027one subsystem\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3e4cb33b_112cf2e7","line":118,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"@pytest.mark.parametrize(\u0027targets\u0027, [[], [{\u0027nqn\u0027: \u0027-\u0027}],"},{"line_number":118,"context_line":"                                   [{\u0027nqn\u0027: TARGET}, {\u0027nqn\u0027: TARGET + \u0027other\u0027}]])"},{"line_number":119,"context_line":"def test_ambiguous_subsystems_rejected(client, session, targets):"},{"line_number":120,"context_line":"    responses(session, [VOLUME], [dict(GROUP, nvmeTcpTargetList\u003dtargets)])"},{"line_number":121,"context_line":"    with pytest.raises(ERROR, match\u003d\u0027one subsystem\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"166283f8_5b742dfe","line":118,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"def test_duplicate_namespace_mapping_rejected(client):"},{"line_number":138,"context_line":"    group \u003d dict(MAPPED, nvmeTcpNamespaceList\u003dMAPPED[\u0027nvmeTcpNamespaceList\u0027] * 2)"},{"line_number":139,"context_line":"    with pytest.raises(ERROR):"},{"line_number":140,"context_line":"        client._nvme_namespace_id(group, \u0027789\u0027)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ab0669aa_e8c7a281","line":138,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"@pytest.mark.parametrize(\u0027address\u0027, [\u00270.0.0.0\u0027, \u0027169.254.1.1\u0027, \u0027127.0.0.1\u0027,"},{"line_number":151,"context_line":"                                    \u0027224.0.0.1\u0027, \u0027::1\u0027, \u0027invalid\u0027, None])"},{"line_number":152,"context_line":"def test_unusable_portals_rejected(client, session, address):"},{"line_number":153,"context_line":"    network \u003d [dict(NETWORK[0], ipv4\u003d{\u0027ip\u0027: address})]"},{"line_number":154,"context_line":"    responses(session, network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1c8359b0_0db304ce","line":151,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    responses(session, NETWORK, [bond])"},{"line_number":197,"context_line":"    assert client.get_nvme_connection_properties(group)[\u0027portals\u0027] \u003d\u003d ["},{"line_number":198,"context_line":"        (\u002710.20.0.1\u0027, 4420, \u0027tcp\u0027)]"},{"line_number":199,"context_line":"    assert session.request.call_args.args[1].endswith(\u0027/rest/v2/network/linkagg\u0027)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"def test_untagged_interface_with_vlans_not_published(client, session):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6b8f8925_ba3af016","line":199,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"def test_mapping_timeout_rolls_back_only_new_mapping(client, session):"},{"line_number":229,"context_line":"    client._timeout \u003d 1"},{"line_number":230,"context_line":"    responses(session, [VOLUME], [GROUP], NETWORK, \u0027success\u0027, [GROUP], \u0027success\u0027)"},{"line_number":231,"context_line":"    with mock.patch.object(qsan_rest.time, \u0027monotonic\u0027, side_effect\u003d[0, 2]):"},{"line_number":232,"context_line":"        with pytest.raises(ERROR, match\u003d\u0027Timed out\u0027):"},{"line_number":233,"context_line":"            attach(client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ecead7d8_0006ac45","line":230,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"def test_mapping_poll_recovers_eventual_visibility(client, session):"},{"line_number":240,"context_line":"    responses(session, [VOLUME], [GROUP], NETWORK, \u0027success\u0027, [GROUP], [MAPPED])"},{"line_number":241,"context_line":"    with mock.patch.object(qsan_rest.greenthread, \u0027sleep\u0027):"},{"line_number":242,"context_line":"        assert attach(client)[\u0027data\u0027][\u0027ns_id\u0027] \u003d\u003d \u00273\u0027"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"62e8173b_55f3986b","line":240,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            attach(client)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"def test_detach_ignores_iscsi_mapping_flag_and_preserves_group(client, session):"},{"line_number":257,"context_line":"    responses(session, [VOLUME], [MAPPED], \u0027success\u0027)"},{"line_number":258,"context_line":"    client.terminate_nvme_connection(VOLUME[\u0027name\u0027], GROUP[\u0027name\u0027])"},{"line_number":259,"context_line":"    assert session.request.call_args.args[1].endswith(\u0027/hostgroups/unmapLun\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bbacdc27_d4997e1f","line":256,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    assert session.request.call_args.args[1].endswith(\u0027/hostgroups/unmapLun\u0027)"},{"line_number":260,"context_line":"    assert session.request.call_args.kwargs[\u0027json\u0027] \u003d\u003d {"},{"line_number":261,"context_line":"        \u0027id\u0027: 42, \u0027volumeIds\u0027: [789]}"},{"line_number":262,"context_line":"    assert not any(c.args[0] \u003d\u003d \u0027DELETE\u0027 for c in session.request.call_args_list)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"@pytest.mark.parametrize(\u0027missing_volume\u0027, [True, False])"}],"source_content_type":"text/x-python","patch_set":1,"id":"8f2c6fe9_70112b93","line":262,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            VOLUME[\u0027name\u0027], \u00273\u0027, \u0027GB\u0027, fakes.FAKE_POOL_NAME, \u0027NVMeTCP\u0027)"},{"line_number":319,"context_line":"    assert result[\u0027arr\u0027] \u003d\u003d {}"},{"line_number":320,"context_line":"    iscsi_mapping.assert_not_called()"},{"line_number":321,"context_line":"    assert session.request.call_args_list[1].kwargs[\u0027json\u0027][\u0027totalSize\u0027] \u003d\u003d 3072"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"def test_mapping_404_uses_existing_fallback(client, session):"}],"source_content_type":"text/x-python","patch_set":1,"id":"90635886_80d4bc47","line":321,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    session.request.side_effect \u003d ["},{"line_number":326,"context_line":"        fakes.mock_response(200, [VOLUME]), fakes.mock_response(200, [GROUP]),"},{"line_number":327,"context_line":"        fakes.mock_response(200, NETWORK), fakes.mock_response(404, {}),"},{"line_number":328,"context_line":"        fakes.mock_response(200, \u0027success\u0027), fakes.mock_response(200, [MAPPED])]"},{"line_number":329,"context_line":"    assert attach(client)[\u0027data\u0027][\u0027ns_id\u0027] \u003d\u003d \u00273\u0027"},{"line_number":330,"context_line":"    assert session.request.call_args_list[4].args[1].endswith("},{"line_number":331,"context_line":"        \u0027/rest/v2/hostgroups/mappingLun\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"89b86304_96d317f7","line":328,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def test_namespace_id_does_not_use_other_volumes(self):"},{"line_number":232,"context_line":"        client \u003d self.client"},{"line_number":233,"context_line":"        self.assertIs(client._nvme_namespace_id(MAPPED, \u0027999\u0027), None)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def test_duplicate_namespace_mapping_rejected(self):"},{"line_number":236,"context_line":"        client \u003d self.client"}],"source_content_type":"text/x-python","patch_set":2,"id":"f6bca9f3_f84d2beb","line":233,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        self.assertEqual(TARGET, properties.targets[0].nqn)"},{"line_number":567,"context_line":"        self.assertEqual(\u00273\u0027, properties.targets[0].ns_id)"},{"line_number":568,"context_line":"        self.assertEqual(NQN, properties.targets[0].host_nqn)"},{"line_number":569,"context_line":"        self.assertIs(properties.targets[0].uuid, None)"},{"line_number":570,"context_line":"        self.assertEqual(2, len(properties.targets[0].portals))"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"    def test_manage_unmanage_reimport_through_rest(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"22b16760_8c31d705","line":569,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_rest.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"ade0d9b2_2bd9f2e4","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"from unittest import mock"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4fc92677_698c1584","line":12,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder import exception\u0027 and in a different group.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"from unittest import mock"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a27d4ca9_f44d669f","line":12,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder import exception\u0027 is identified as Application.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fc9ae757_60a26464","line":13,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"28c5c042_2459cfab","line":13,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    @mock.patch(\u0027eventlet.greenthread.sleep\u0027, return_value\u003dNone)"},{"line_number":712,"context_line":"    def test_wait_volume_online_returns_none_when_volume_missing(self,"},{"line_number":713,"context_line":"                                                                  mock_sleep):"},{"line_number":714,"context_line":"        self._setup_request([fakes.mock_response(200, [])])"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        result \u003d self.client._wait_volume_online(\u0027cinder-nonexistent\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"80e3adaf_3d762638","line":713,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def test_ensure_token_refresh_failure_falls_back_to_login(self):"},{"line_number":754,"context_line":"        import time"},{"line_number":755,"context_line":"        import requests as req"},{"line_number":756,"context_line":"        self.client._access_token \u003d fakes.FAKE_TOKEN"},{"line_number":757,"context_line":"        self.client._refresh_token \u003d fakes.FAKE_REFRESH_TOKEN"},{"line_number":758,"context_line":"        self.client._token_expire_time \u003d time.time() + 10"}],"source_content_type":"text/x-python","patch_set":1,"id":"d02834a2_2944a3a6","line":755,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (time, requests)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 QSAN Technology, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"e68dfdcf_a7216e02","line":1,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H103: Header does not match Apache 2.0 License notice","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":9,"context_line":"from unittest import mock"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"718c17f7_75947cd1","line":12,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder import exception\u0027 and in a different group.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":9,"context_line":"from unittest import mock"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b1e74bec_577dd47c","line":12,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder import exception\u0027 is identified as Application.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dae2897e_73dbde41","line":13,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.tests.unit.volume.drivers.qsan.fakes)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import exception"},{"line_number":12,"context_line":"import unittest as test"},{"line_number":13,"context_line":"from cinder.tests.unit.volume.drivers.qsan import fakes"},{"line_number":14,"context_line":"from cinder.volume.drivers.qsan import qsan_rest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"955e9a75_4398d993","line":13,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.tests.unit.volume.drivers.qsan import fakes\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    @mock.patch(\u0027eventlet.greenthread.sleep\u0027, return_value\u003dNone)"},{"line_number":712,"context_line":"    def test_wait_volume_online_returns_none_when_volume_missing(self,"},{"line_number":713,"context_line":"                                                                  mock_sleep):"},{"line_number":714,"context_line":"        self._setup_request([fakes.mock_response(200, [])])"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        result \u003d self.client._wait_volume_online(\u0027cinder-nonexistent\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fd828d00_972e2439","line":713,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def test_ensure_token_refresh_failure_falls_back_to_login(self):"},{"line_number":754,"context_line":"        import time"},{"line_number":755,"context_line":"        import requests as req"},{"line_number":756,"context_line":"        self.client._access_token \u003d fakes.FAKE_TOKEN"},{"line_number":757,"context_line":"        self.client._refresh_token \u003d fakes.FAKE_REFRESH_TOKEN"},{"line_number":758,"context_line":"        self.client._token_expire_time \u003d time.time() + 10"}],"source_content_type":"text/x-python","patch_set":2,"id":"5d9f122f_79bd4f5e","line":755,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H306: imports not in alphabetical order (time, requests)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/tests/unit/volume/drivers/qsan/test_qsan_ssh_fc.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder import context"},{"line_number":20,"context_line":"from cinder import exception"},{"line_number":21,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":22,"context_line":"import unittest as test"},{"line_number":23,"context_line":"from cinder.volume import configuration as conf"},{"line_number":24,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":25,"context_line":"from cinder.volume.drivers.qsan import qsan_fc"}],"source_content_type":"text/x-python","patch_set":1,"id":"0ac2fad6_fb419e7a","line":22,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import unittest\u0027 should be before \u0027from cinder.tests.unit import fake_constants\u0027 and in a different group.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from cinder import context"},{"line_number":20,"context_line":"from cinder import exception"},{"line_number":21,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":22,"context_line":"import unittest as test"},{"line_number":23,"context_line":"from cinder.volume import configuration as conf"},{"line_number":24,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":25,"context_line":"from cinder.volume.drivers.qsan import qsan_fc"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4e4efa2_5c7d3390","line":22,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import unittest\u0027 is identified as Stdlib and \u0027from cinder.tests.unit import fake_constants\u0027 is identified as Application.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cinder import exception"},{"line_number":21,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":22,"context_line":"import unittest as test"},{"line_number":23,"context_line":"from cinder.volume import configuration as conf"},{"line_number":24,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":25,"context_line":"from cinder.volume.drivers.qsan import qsan_fc"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9022f7ee_eeb7b27d","line":23,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (unittest, cinder.volume.configuration)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cinder import exception"},{"line_number":21,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":22,"context_line":"import unittest as test"},{"line_number":23,"context_line":"from cinder.volume import configuration as conf"},{"line_number":24,"context_line":"from cinder.volume.drivers.qsan import qsan_common"},{"line_number":25,"context_line":"from cinder.volume.drivers.qsan import qsan_fc"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"60e3ae0b_8e4d44a2","line":23,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.volume import configuration\u0027 is identified as Application and \u0027import unittest\u0027 is identified as Stdlib.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"}],"cinder/volume/drivers/qsan/qsan_backup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                  \u0027mp\u0027: self._backup_multipath})\r"},{"line_number":133,"context_line":"\r"},{"line_number":134,"context_line":"        if not self._san_ip or not self._san_login or not self._san_password:\r"},{"line_number":135,"context_line":"            LOG.error(_(\u0027backup_management_ip, backup_login_account, \u0027\r"},{"line_number":136,"context_line":"                        \u0027backup_login_password must be given in \u0027\r"},{"line_number":137,"context_line":"                        \u0027cinder-backup/cinder.conf\u0027))\r"},{"line_number":138,"context_line":"            msg \u003d _(\u0027backup configuration error\u0027)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"a0a3c392_426ce739","line":135,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.BackupDriverException(reason\u003dmsg)\r"},{"line_number":140,"context_line":"\r"},{"line_number":141,"context_line":"        if (self._api_protocol \u003d\u003d \u0027rest\u0027 and\r"},{"line_number":142,"context_line":"                self._protocol not in (BackupProtocol.iSCSI, BackupProtocol.NVMe)):\r"},{"line_number":143,"context_line":"            msg \u003d _(\u0027REST backup supports iSCSI and NVMe/TCP protocols.\u0027)\r"},{"line_number":144,"context_line":"            LOG.error(msg)\r"},{"line_number":145,"context_line":"            raise exception.BackupDriverException(reason\u003dmsg)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"0e114c72_08ced42a","line":142,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"\r"},{"line_number":303,"context_line":"        properties \u003d volume_utils.brick_get_connector_properties(\r"},{"line_number":304,"context_line":"            self._backup_multipath)\r"},{"line_number":305,"context_line":"        ###attach\r"},{"line_number":306,"context_line":"        try:\r"},{"line_number":307,"context_line":"            attach_info \u003d self._attach_backup_device(backup, properties)\r"},{"line_number":308,"context_line":"        except exception.BackupDriverException:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"14c2c4f2_2b477332","line":305,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                      {\u0027block\u0027: block + 1,\r"},{"line_number":416,"context_line":"                       \u0027blocks\u0027: blocks,\r"},{"line_number":417,"context_line":"                       \u0027rate\u0027: rate,\r"},{"line_number":418,"context_line":"                       \u0027unit\u0027:unit})\r"},{"line_number":419,"context_line":"        LOG.debug(\"Transfer data from \u0027%(src)s\u0027 to \u0027%(dest)s\u0027 completed\",\r"},{"line_number":420,"context_line":"                  {\u0027src\u0027: src_name, \u0027dest\u0027: dest_name})\r"},{"line_number":421,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"2a4e2d07_718db231","line":418,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":465,"context_line":"                        \u0027create_volume, falling back to host mapping via %s\u0027,\r"},{"line_number":466,"context_line":"                        self._api_protocol)\r"},{"line_number":467,"context_line":"            lun_id \u003d self._helpers.iscsi_map_vol_to_host(name,\r"},{"line_number":468,"context_line":"                                                   connector[\u0027initiator\u0027],\r"},{"line_number":469,"context_line":"                                                   self._target)\r"},{"line_number":470,"context_line":"\r"},{"line_number":471,"context_line":"        data \u003d {}\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"d719e5cc_29b2d521","line":468,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                        self._api_protocol)\r"},{"line_number":467,"context_line":"            lun_id \u003d self._helpers.iscsi_map_vol_to_host(name,\r"},{"line_number":468,"context_line":"                                                   connector[\u0027initiator\u0027],\r"},{"line_number":469,"context_line":"                                                   self._target)\r"},{"line_number":470,"context_line":"\r"},{"line_number":471,"context_line":"        data \u003d {}\r"},{"line_number":472,"context_line":"        LOG.info(\u0027[_iscsi_initialize_connection] using lun_id\u003d%s\u0027, lun_id)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"d47aa4d3_1c33a809","line":469,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        data \u003d {}\r"},{"line_number":472,"context_line":"        LOG.info(\u0027[_iscsi_initialize_connection] using lun_id\u003d%s\u0027, lun_id)\r"},{"line_number":473,"context_line":"        if lun_id \u003d\u003d \"noOnline\":\r"},{"line_number":474,"context_line":"                LOG.error(_(\u0027[_iscsi_initialize_connection] \u0027\r"},{"line_number":475,"context_line":"                            \u0027Volume %s is not Online\u0027), name)\r"},{"line_number":476,"context_line":"        else:\r"},{"line_number":477,"context_line":"                volume_attributes \u003d self._helpers.get_iscsi_connect(\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"1564f123_d254bda5","line":474,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        data \u003d {}\r"},{"line_number":472,"context_line":"        LOG.info(\u0027[_iscsi_initialize_connection] using lun_id\u003d%s\u0027, lun_id)\r"},{"line_number":473,"context_line":"        if lun_id \u003d\u003d \"noOnline\":\r"},{"line_number":474,"context_line":"                LOG.error(_(\u0027[_iscsi_initialize_connection] \u0027\r"},{"line_number":475,"context_line":"                            \u0027Volume %s is not Online\u0027), name)\r"},{"line_number":476,"context_line":"        else:\r"},{"line_number":477,"context_line":"                volume_attributes \u003d self._helpers.get_iscsi_connect(\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b1710e5_b57095af","line":474,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E117 over-indented","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                LOG.error(_(\u0027[_iscsi_initialize_connection] \u0027\r"},{"line_number":475,"context_line":"                            \u0027Volume %s is not Online\u0027), name)\r"},{"line_number":476,"context_line":"        else:\r"},{"line_number":477,"context_line":"                volume_attributes \u003d self._helpers.get_iscsi_connect(\r"},{"line_number":478,"context_line":"                    self._target)\r"},{"line_number":479,"context_line":"                lun \u003d []\r"},{"line_number":480,"context_line":"                for i in range(len(volume_attributes[\"portal\"])):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"5cbcd7ba_0da06e82","line":477,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E117 over-indented","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":478,"context_line":"                    self._target)\r"},{"line_number":479,"context_line":"                lun \u003d []\r"},{"line_number":480,"context_line":"                for i in range(len(volume_attributes[\"portal\"])):\r"},{"line_number":481,"context_line":"                       lun.append(lun_id)\r"},{"line_number":482,"context_line":"                data[\u0027target_discovered\u0027] \u003d False\r"},{"line_number":483,"context_line":"                data[\u0027target_iqns\u0027] \u003d volume_attributes[\"iscsi_name\"]\r"},{"line_number":484,"context_line":"                data[\u0027target_portals\u0027] \u003d volume_attributes[\"portal\"]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"d95a2b39_a2666adb","line":481,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":478,"context_line":"                    self._target)\r"},{"line_number":479,"context_line":"                lun \u003d []\r"},{"line_number":480,"context_line":"                for i in range(len(volume_attributes[\"portal\"])):\r"},{"line_number":481,"context_line":"                       lun.append(lun_id)\r"},{"line_number":482,"context_line":"                data[\u0027target_discovered\u0027] \u003d False\r"},{"line_number":483,"context_line":"                data[\u0027target_iqns\u0027] \u003d volume_attributes[\"iscsi_name\"]\r"},{"line_number":484,"context_line":"                data[\u0027target_portals\u0027] \u003d volume_attributes[\"portal\"]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b92a3a8_60e5b21b","line":481,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E117 over-indented","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        LOG.debug(\u0027[_fc_initialize_connection] Step 1: FC mapping result\u003d%s\u0027,\r"},{"line_number":513,"context_line":"                  resultInfo)\r"},{"line_number":514,"context_line":"        if resultInfo \u003d\u003d \"noOnline\":\r"},{"line_number":515,"context_line":"            LOG.error(_(\u0027[_fc_initialize_connection] \u0027\r"},{"line_number":516,"context_line":"                        \u0027Backup volume %s is not Online\u0027), name)\r"},{"line_number":517,"context_line":"            data \u003d {}\r"},{"line_number":518,"context_line":"        else:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"60373736_c0243e8e","line":515,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            except Exception:\r"},{"line_number":526,"context_line":"                with excutils.save_and_reraise_exception():\r"},{"line_number":527,"context_line":"                    self._terminate_connection(backup, connector)\r"},{"line_number":528,"context_line":"                    LOG.error(_(\u0027initialize_connection: Failed \u0027\r"},{"line_number":529,"context_line":"                                \u0027to collect return \u0027\r"},{"line_number":530,"context_line":"                                \u0027properties for backup %(vol)s and connector \u0027\r"},{"line_number":531,"context_line":"                                \u0027%(conn)s.\\n\u0027), {\u0027vol\u0027: backup,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"a22989f3_5321143c","line":528,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        if not connector.check_valid_device(device[\u0027path\u0027], True):\r"},{"line_number":605,"context_line":"            if isinstance(device[\u0027path\u0027], str):\r"},{"line_number":606,"context_line":"                raise exception.DeviceUnavailable(\r"},{"line_number":607,"context_line":"                        path\u003ddevice[\u0027path\u0027],\r"},{"line_number":608,"context_line":"                        reason\u003d(_(\"Unable to access the backend \"\r"},{"line_number":609,"context_line":"                                  \"storage via the path %(path)s.\") %\r"},{"line_number":610,"context_line":"                                {\u0027path\u0027: device[\u0027path\u0027]})\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"1745b07b_ffff2950","line":607,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E126 continuation line over-indented for hanging indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                        reason\u003d(_(\"Unable to access the backend \"\r"},{"line_number":609,"context_line":"                                  \"storage via the path %(path)s.\") %\r"},{"line_number":610,"context_line":"                                {\u0027path\u0027: device[\u0027path\u0027]})\r"},{"line_number":611,"context_line":"                      )\r"},{"line_number":612,"context_line":"            else:\r"},{"line_number":613,"context_line":"                raise exception.DeviceUnavailable(\r"},{"line_number":614,"context_line":"                    path\u003dNone,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"76af87ad_392f1edf","line":611,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E126 continuation line over-indented for hanging indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":647,"context_line":"            raise\r"},{"line_number":648,"context_line":"        return validate\r"},{"line_number":649,"context_line":"\r"},{"line_number":650,"context_line":"class BackupHelpers(object):\r"},{"line_number":651,"context_line":"\r"},{"line_number":652,"context_line":"    def __init__(self, run_ssh):\r"},{"line_number":653,"context_line":"        self._ssh \u003d run_ssh\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"0f3ff312_c23b17c7","line":650,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        raise exception.BackupDriverException(reason\u003dmsg)\r"},{"line_number":726,"context_line":"\r"},{"line_number":727,"context_line":"\r"},{"line_number":728,"context_line":"    def iscsi_map_vol_to_host(self, volume_name, host_name, target):\r"},{"line_number":729,"context_line":"        \"\"\"Create a mapping between a volume to a host.\"\"\"\r"},{"line_number":730,"context_line":"        LOG.debug(\u0027[iscsi_map_vol_to_host] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,\r"},{"line_number":731,"context_line":"                  volume_name, host_name, target)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f031f9d_646561aa","line":728,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":735,"context_line":"\r"},{"line_number":736,"context_line":"        try:\r"},{"line_number":737,"context_line":"            result_lun \u003d self.run_ssh_list(ssh_cmd)\r"},{"line_number":738,"context_line":"        except Exception as ex:\r"},{"line_number":739,"context_line":"            raise exception.VolumeDriverException(\r"},{"line_number":740,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))\r"},{"line_number":741,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"a8437963_bfe5eb20","line":738,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F841 local variable \u0027ex\u0027 is assigned to but never used","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))\r"},{"line_number":741,"context_line":"\r"},{"line_number":742,"context_line":"        if result_lun is None or result_lun[\u0027info\u0027] is None:\r"},{"line_number":743,"context_line":"            LOG.error(_(\u0027Mapping error, LUN id is empty. \u0027\r"},{"line_number":744,"context_line":"                        \u0027QSAN storage must return a LUN id.\u0027))\r"},{"line_number":745,"context_line":"            raise\r"},{"line_number":746,"context_line":"        else:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"038664f5_1b87782a","line":743,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                   \u0027--protocol\u0027, \u0027WITH_FCP_ACL\u0027, \u0027--host\u0027, host_name]\r"},{"line_number":757,"context_line":"        result_lun \u003d self.run_ssh_list(ssh_cmd)\r"},{"line_number":758,"context_line":"        if result_lun is None or result_lun[\u0027info\u0027] is None:\r"},{"line_number":759,"context_line":"            LOG.error(_(\u0027Mapping error, LUN id is empty. \u0027\r"},{"line_number":760,"context_line":"                        \u0027QSAN storage must return a LUN id.\u0027))\r"},{"line_number":761,"context_line":"            raise\r"},{"line_number":762,"context_line":"        else:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"0a40ea6d_d4ca1e67","line":759,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":899,"context_line":"\r"},{"line_number":900,"context_line":"    def initialize_nvme_connection(self, name, host_nqn, group_name):\r"},{"line_number":901,"context_line":"        return self._client.initialize_nvme_connection(name, host_nqn,\r"},{"line_number":902,"context_line":"                                                      group_name)\r"},{"line_number":903,"context_line":"\r"},{"line_number":904,"context_line":"    def terminate_nvme_connection(self, name, group_name):\r"},{"line_number":905,"context_line":"        return self._client.terminate_nvme_connection(name, group_name)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"2d7ddb66_1d7f5faa","line":902,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":943,"context_line":"            raise exception.BackupDriverException(reason\u003dmsg)\r"},{"line_number":944,"context_line":"        return lun_id\r"},{"line_number":945,"context_line":"\r"},{"line_number":946,"context_line":"def get_backup_driver(context):\r"},{"line_number":947,"context_line":"    return QsanBackupDriver(context)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"d0135fbc_e9029aa5","line":946,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":307,"context_line":"\r"},{"line_number":308,"context_line":"        properties \u003d volume_utils.brick_get_connector_properties(\r"},{"line_number":309,"context_line":"            self._backup_multipath)\r"},{"line_number":310,"context_line":"        ###attach\r"},{"line_number":311,"context_line":"        try:\r"},{"line_number":312,"context_line":"            attach_info \u003d self._attach_backup_device(backup, properties)\r"},{"line_number":313,"context_line":"        except exception.BackupDriverException:\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"2d867c24_3aba92ba","line":310,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                      {\u0027block\u0027: block + 1,\r"},{"line_number":421,"context_line":"                       \u0027blocks\u0027: blocks,\r"},{"line_number":422,"context_line":"                       \u0027rate\u0027: rate,\r"},{"line_number":423,"context_line":"                       \u0027unit\u0027:unit})\r"},{"line_number":424,"context_line":"        LOG.debug(\"Transfer data from \u0027%(src)s\u0027 to \u0027%(dest)s\u0027 completed\",\r"},{"line_number":425,"context_line":"                  {\u0027src\u0027: src_name, \u0027dest\u0027: dest_name})\r"},{"line_number":426,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"95a3d1f4_c5eac054","line":423,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                        \u0027create_volume, falling back to host mapping via %s\u0027,\r"},{"line_number":471,"context_line":"                        self._api_protocol)\r"},{"line_number":472,"context_line":"            lun_id \u003d self._helpers.iscsi_map_vol_to_host(name,\r"},{"line_number":473,"context_line":"                                                   connector[\u0027initiator\u0027],\r"},{"line_number":474,"context_line":"                                                   self._target)\r"},{"line_number":475,"context_line":"\r"},{"line_number":476,"context_line":"        data \u003d {}\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"96e93b43_d2914a20","line":473,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                        self._api_protocol)\r"},{"line_number":472,"context_line":"            lun_id \u003d self._helpers.iscsi_map_vol_to_host(name,\r"},{"line_number":473,"context_line":"                                                   connector[\u0027initiator\u0027],\r"},{"line_number":474,"context_line":"                                                   self._target)\r"},{"line_number":475,"context_line":"\r"},{"line_number":476,"context_line":"        data \u003d {}\r"},{"line_number":477,"context_line":"        LOG.info(\u0027[_iscsi_initialize_connection] using lun_id\u003d%s\u0027, lun_id)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"95659440_e41dfdcf","line":474,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        data \u003d {}\r"},{"line_number":477,"context_line":"        LOG.info(\u0027[_iscsi_initialize_connection] using lun_id\u003d%s\u0027, lun_id)\r"},{"line_number":478,"context_line":"        if lun_id \u003d\u003d \"noOnline\":\r"},{"line_number":479,"context_line":"                LOG.error(\u0027[_iscsi_initialize_connection] \u0027\r"},{"line_number":480,"context_line":"                          \u0027Volume %s is not Online\u0027, name)\r"},{"line_number":481,"context_line":"        else:\r"},{"line_number":482,"context_line":"                volume_attributes \u003d self._helpers.get_iscsi_connect(\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"63bc5a6f_6a20397e","line":479,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E117 over-indented","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                LOG.error(\u0027[_iscsi_initialize_connection] \u0027\r"},{"line_number":480,"context_line":"                          \u0027Volume %s is not Online\u0027, name)\r"},{"line_number":481,"context_line":"        else:\r"},{"line_number":482,"context_line":"                volume_attributes \u003d self._helpers.get_iscsi_connect(\r"},{"line_number":483,"context_line":"                    self._target)\r"},{"line_number":484,"context_line":"                lun \u003d []\r"},{"line_number":485,"context_line":"                for i in range(len(volume_attributes[\"portal\"])):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"77e903bc_486bd107","line":482,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E117 over-indented","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":483,"context_line":"                    self._target)\r"},{"line_number":484,"context_line":"                lun \u003d []\r"},{"line_number":485,"context_line":"                for i in range(len(volume_attributes[\"portal\"])):\r"},{"line_number":486,"context_line":"                       lun.append(lun_id)\r"},{"line_number":487,"context_line":"                data[\u0027target_discovered\u0027] \u003d False\r"},{"line_number":488,"context_line":"                data[\u0027target_iqns\u0027] \u003d volume_attributes[\"iscsi_name\"]\r"},{"line_number":489,"context_line":"                data[\u0027target_portals\u0027] \u003d volume_attributes[\"portal\"]\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"12db56da_facf41f2","line":486,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":483,"context_line":"                    self._target)\r"},{"line_number":484,"context_line":"                lun \u003d []\r"},{"line_number":485,"context_line":"                for i in range(len(volume_attributes[\"portal\"])):\r"},{"line_number":486,"context_line":"                       lun.append(lun_id)\r"},{"line_number":487,"context_line":"                data[\u0027target_discovered\u0027] \u003d False\r"},{"line_number":488,"context_line":"                data[\u0027target_iqns\u0027] \u003d volume_attributes[\"iscsi_name\"]\r"},{"line_number":489,"context_line":"                data[\u0027target_portals\u0027] \u003d volume_attributes[\"portal\"]\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8591418_17834f0f","line":486,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E117 over-indented","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                              \u0027to collect return \u0027\r"},{"line_number":535,"context_line":"                              \u0027properties for backup %(vol)s and connector \u0027\r"},{"line_number":536,"context_line":"                              \u0027%(conn)s.\\n\u0027, {\u0027vol\u0027: backup,\r"},{"line_number":537,"context_line":"                                                 \u0027conn\u0027: connector})\r"},{"line_number":538,"context_line":"\r"},{"line_number":539,"context_line":"            LOG.debug(\u0027[_fc_initialize_connection] leave: backup\u003d%s, \u0027\r"},{"line_number":540,"context_line":"                      \u0027properties\u003d%s\u0027, backup[\u0027id\u0027], data)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9326bae8_4088be10","line":537,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        if not connector.check_valid_device(device[\u0027path\u0027], True):\r"},{"line_number":610,"context_line":"            if isinstance(device[\u0027path\u0027], str):\r"},{"line_number":611,"context_line":"                raise exception.DeviceUnavailable(\r"},{"line_number":612,"context_line":"                        path\u003ddevice[\u0027path\u0027],\r"},{"line_number":613,"context_line":"                        reason\u003d(_(\"Unable to access the backend \"\r"},{"line_number":614,"context_line":"                                  \"storage via the path %(path)s.\") %\r"},{"line_number":615,"context_line":"                                {\u0027path\u0027: device[\u0027path\u0027]})\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"1d43ee14_af4b93d5","line":612,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E126 continuation line over-indented for hanging indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                        reason\u003d(_(\"Unable to access the backend \"\r"},{"line_number":614,"context_line":"                                  \"storage via the path %(path)s.\") %\r"},{"line_number":615,"context_line":"                                {\u0027path\u0027: device[\u0027path\u0027]})\r"},{"line_number":616,"context_line":"                      )\r"},{"line_number":617,"context_line":"            else:\r"},{"line_number":618,"context_line":"                raise exception.DeviceUnavailable(\r"},{"line_number":619,"context_line":"                    path\u003dNone,\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"c696cf88_d4e45bc4","line":616,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E126 continuation line over-indented for hanging indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":652,"context_line":"            raise\r"},{"line_number":653,"context_line":"        return validate\r"},{"line_number":654,"context_line":"\r"},{"line_number":655,"context_line":"class BackupHelpers(object):\r"},{"line_number":656,"context_line":"\r"},{"line_number":657,"context_line":"    def __init__(self, run_ssh):\r"},{"line_number":658,"context_line":"        self._ssh \u003d run_ssh\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"d61b1afb_86fa9c57","line":655,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        raise exception.BackupDriverException(reason\u003dmsg)\r"},{"line_number":731,"context_line":"\r"},{"line_number":732,"context_line":"\r"},{"line_number":733,"context_line":"    def iscsi_map_vol_to_host(self, volume_name, host_name, target):\r"},{"line_number":734,"context_line":"        \"\"\"Create a mapping between a volume to a host.\"\"\"\r"},{"line_number":735,"context_line":"        LOG.debug(\u0027[iscsi_map_vol_to_host] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,\r"},{"line_number":736,"context_line":"                  volume_name, host_name, target)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"d852eee1_2713675c","line":733,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":740,"context_line":"\r"},{"line_number":741,"context_line":"        try:\r"},{"line_number":742,"context_line":"            result_lun \u003d self.run_ssh_list(ssh_cmd)\r"},{"line_number":743,"context_line":"        except Exception as ex:\r"},{"line_number":744,"context_line":"            raise exception.VolumeDriverException(\r"},{"line_number":745,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))\r"},{"line_number":746,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"328874dd_05904628","line":743,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F841 local variable \u0027ex\u0027 is assigned to but never used","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":904,"context_line":"\r"},{"line_number":905,"context_line":"    def initialize_nvme_connection(self, name, host_nqn, group_name):\r"},{"line_number":906,"context_line":"        return self._client.initialize_nvme_connection(name, host_nqn,\r"},{"line_number":907,"context_line":"                                                      group_name)\r"},{"line_number":908,"context_line":"\r"},{"line_number":909,"context_line":"    def terminate_nvme_connection(self, name, group_name):\r"},{"line_number":910,"context_line":"        return self._client.terminate_nvme_connection(name, group_name)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"f738d8f1_6182a2e8","line":907,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":948,"context_line":"            raise exception.BackupDriverException(reason\u003dmsg)\r"},{"line_number":949,"context_line":"        return lun_id\r"},{"line_number":950,"context_line":"\r"},{"line_number":951,"context_line":"def get_backup_driver(context):\r"},{"line_number":952,"context_line":"    return QsanBackupDriver(context)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"0d303113_62c6384e","line":951,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/volume/drivers/qsan/qsan_common.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import math"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import paramiko"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"952e811b_ac415973","line":18,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import paramiko\u0027 is identified as Third Party and \u0027import os\u0027 is identified as Stdlib.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import math"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import paramiko"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":1,"id":"a81a8280_22485390","line":19,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import random\u0027 should be before \u0027import paramiko\u0027 and in a different group.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import math"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import paramiko"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":1,"id":"4f856990_215c0afa","line":19,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import random\u0027 is identified as Stdlib and \u0027import paramiko\u0027 is identified as Third Party.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":"from oslo_utils import excutils"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":"from cinder.compute import nova"},{"line_number":29,"context_line":"from cinder import context"},{"line_number":30,"context_line":"from cinder import coordination"},{"line_number":31,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"4175c34a_ca8f1563","line":28,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H306: imports not in alphabetical order (oslo_utils.units, cinder.compute.nova)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":"from oslo_utils import excutils"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":"from cinder.compute import nova"},{"line_number":29,"context_line":"from cinder import context"},{"line_number":30,"context_line":"from cinder import coordination"},{"line_number":31,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"c514ab4a_c6c87bd1","line":28,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.compute import nova\u0027 is identified as Application and \u0027from oslo_utils import units\u0027 is identified as Third Party.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder import coordination"},{"line_number":31,"context_line":"from cinder import exception"},{"line_number":32,"context_line":"from cinder.i18n import _"},{"line_number":33,"context_line":"from cinder import interface"},{"line_number":34,"context_line":"from cinder import objects"},{"line_number":35,"context_line":"from cinder.objects import fields"},{"line_number":36,"context_line":"from cinder import utils as cinder_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"de46bf92_6d95ef05","line":33,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F401 \u0027cinder.interface\u0027 imported but unused","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"d1c6f0dc_db883d1f","line":256,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"725ceaa3_e5080116","line":256,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"48ab745f_1c95d96f","line":257,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"22b4e111_10b3b496","line":257,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":261,"context_line":"                  volume_name, hostname, target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f6080885_67831edf","line":258,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":261,"context_line":"                  volume_name, hostname, target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"cfd67705_0e4a6d7f","line":258,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":261,"context_line":"                  volume_name, hostname, target)"},{"line_number":262,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshMapVoltoHost\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"409a55f0_73c5bfc1","line":259,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        Map volume to host."},{"line_number":258,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":259,"context_line":"        \"\"\""},{"line_number":260,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":261,"context_line":"                  volume_name, hostname, target)"},{"line_number":262,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshMapVoltoHost\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"f7f88d43_c583fe8e","line":259,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        try:"},{"line_number":268,"context_line":"            return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":269,"context_line":"        except Exception as ex:"},{"line_number":270,"context_line":"            raise exception.VolumeDriverException("},{"line_number":271,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afdda5e_3651c12d","line":269,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F841 local variable \u0027ex\u0027 is assigned to but never used","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def mkvolume_with_host_group(self, name, size, units, poolName,"},{"line_number":274,"context_line":"                                protocol\u003d\u0027WITH_ISCSI\u0027, allow_hosts\u003d\u0027*\u0027):"},{"line_number":275,"context_line":"        \"\"\"Create volume with host group."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        Uses the create_volume API which automatically adds RAID volumes"}],"source_content_type":"text/x-python","patch_set":1,"id":"264773dd_ed1f51f0","line":274,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        LOG.debug(\u0027[ssh_start_replication] volume\u003d%s\u0027, volume)"},{"line_number":470,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshStartReplication\u0027]"},{"line_number":471,"context_line":"        if volume:"},{"line_number":472,"context_line":"            ssh_cmd.extend([\u0027--volume\u0027,volume])"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        self.run_ssh_no_output(ssh_cmd)"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f495458d_031ad51e","line":472,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        LOG.debug(\u0027[ssh_get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":478,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshGetReplicationSync\u0027]"},{"line_number":479,"context_line":"        if volume:"},{"line_number":480,"context_line":"            ssh_cmd.extend([\u0027--volume\u0027,volume])"},{"line_number":481,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def ssh_terminate_replication(self, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b3b3a1e4_9045ec1e","line":480,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":491,"context_line":"                  name, setting)"},{"line_number":492,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshSetVolumeProperty\u0027,"},{"line_number":493,"context_line":"                   \u0027--volume\u0027, name]"},{"line_number":494,"context_line":"        for key , value in setting.items():"},{"line_number":495,"context_line":"            ssh_cmd.extend([\u0027--\u0027+key,value])"},{"line_number":496,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7cc3c3bc_ceb445db","line":494,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E203 whitespace before \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshSetVolumeProperty\u0027,"},{"line_number":493,"context_line":"                   \u0027--volume\u0027, name]"},{"line_number":494,"context_line":"        for key , value in setting.items():"},{"line_number":495,"context_line":"            ssh_cmd.extend([\u0027--\u0027+key,value])"},{"line_number":496,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    def ssh_schedule_replication(self, name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5c6cf5e8_9f95d13f","line":495,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E226 missing whitespace around arithmetic operator","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshSetVolumeProperty\u0027,"},{"line_number":493,"context_line":"                   \u0027--volume\u0027, name]"},{"line_number":494,"context_line":"        for key , value in setting.items():"},{"line_number":495,"context_line":"            ssh_cmd.extend([\u0027--\u0027+key,value])"},{"line_number":496,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    def ssh_schedule_replication(self, name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bde6cb30_e8ec1ace","line":495,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":585,"context_line":"            node \u003d storage_nodes[key]"},{"line_number":586,"context_line":"            wwpns \u003d set(node[\u0027WWPN\u0027])"},{"line_number":587,"context_line":"            resp \u003d self.client.lsportfc(node[\u0027id\u0027])"},{"line_number":588,"context_line":"            if resp !\u003d None:"},{"line_number":589,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":590,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":591,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"48bf7708_b099a3a2","line":588,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E711 comparison to None should be \u0027if cond is not None:\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            wwpns \u003d set(node[\u0027WWPN\u0027])"},{"line_number":587,"context_line":"            resp \u003d self.client.lsportfc(node[\u0027id\u0027])"},{"line_number":588,"context_line":"            if resp !\u003d None:"},{"line_number":589,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":590,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":591,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"},{"line_number":592,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"26d80335_a73103bd","line":589,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":587,"context_line":"            resp \u003d self.client.lsportfc(node[\u0027id\u0027])"},{"line_number":588,"context_line":"            if resp !\u003d None:"},{"line_number":589,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":590,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":591,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"            node[\u0027WWPN\u0027] \u003d list(wwpns)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f94e02a7_fbb4be92","line":590,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            if resp !\u003d None:"},{"line_number":589,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":590,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":591,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"            node[\u0027WWPN\u0027] \u003d list(wwpns)"},{"line_number":594,"context_line":"            LOG.debug(\u0027[add_fc_wwpns] WWPN on node %(node)s: %(wwpn)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"4051782b_1d7774db","line":591,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":597,"context_line":"    def get_conn_fc_wwpns(self, host):"},{"line_number":598,"context_line":"        LOG.debug(\u0027[get_conn_fc_wwpns] host\u003d%s\u0027, host)"},{"line_number":599,"context_line":"        wwpns \u003d set()"},{"line_number":600,"context_line":"        resp \u003d self.client.getFcWwpns(\u0027\u0027,host\u003dhost)"},{"line_number":601,"context_line":"        for wwpn in resp.select(\u0027local_wwpn\u0027):"},{"line_number":602,"context_line":"            if wwpn is not None:"},{"line_number":603,"context_line":"                wwpns.add(wwpn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7380fedb_356aceaa","line":600,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        LOG.debug(\u0027[delete_lun_map] volume\u003d%s, target\u003d%s, \u0027"},{"line_number":610,"context_line":"                  \u0027host\u003d%s, protocol\u003d%s\u0027,"},{"line_number":611,"context_line":"                  volumeName, target, host, protocol)"},{"line_number":612,"context_line":"        lun \u003d self.client.deleteLunMap(target, volumeName, host, protocol)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def get_fc_info(self):"},{"line_number":615,"context_line":"        LOG.debug(\u0027[get_fc_info] Retrieving FC wwnn/wwpn info\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f5699a6_d24177c5","line":612,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F841 local variable \u0027lun\u0027 is assigned to but never used","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":775,"context_line":"        self.client.ssh_start_replication(volume)"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"}],"source_content_type":"text/x-python","patch_set":1,"id":"5506fa41_c975e275","line":778,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":775,"context_line":"        self.client.ssh_start_replication(volume)"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"}],"source_content_type":"text/x-python","patch_set":1,"id":"862fa715_59b21cba","line":778,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"}],"source_content_type":"text/x-python","patch_set":1,"id":"476a248b_a5d6ff3d","line":779,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"}],"source_content_type":"text/x-python","patch_set":1,"id":"fe33feaf_a134e0d2","line":779,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":777,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"}],"source_content_type":"text/x-python","patch_set":1,"id":"bd5bfc0f_56011721","line":780,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":777,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"}],"source_content_type":"text/x-python","patch_set":1,"id":"e8b2931d_83427491","line":780,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"}],"source_content_type":"text/x-python","patch_set":1,"id":"c54b3a46_4edb6212","line":781,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":778,"context_line":"        \"\"\""},{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"}],"source_content_type":"text/x-python","patch_set":1,"id":"d088e325_fa97a1bf","line":781,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"}],"source_content_type":"text/x-python","patch_set":1,"id":"634bb81c_182999f5","line":782,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        get replication sync status"},{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"}],"source_content_type":"text/x-python","patch_set":1,"id":"553945f6_dedb6afe","line":782,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"}],"source_content_type":"text/x-python","patch_set":1,"id":"40af6134_c90c3ada","line":783,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        :return:"},{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"}],"source_content_type":"text/x-python","patch_set":1,"id":"e73df705_f45a775b","line":783,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"}],"source_content_type":"text/x-python","patch_set":1,"id":"466d1820_1c79d2be","line":784,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        [{"},{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d87ad65_3c95103c","line":784,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"f06a4021_23e8478c","line":785,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            name :"},{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8deae9_ed0ed604","line":785,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff21733d_15343762","line":786,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8d9f03f5_b07e7e1d","line":786,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":790,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"34c6f29d_22c44a77","line":787,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":784,"context_line":"            speed : Mb/s"},{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":790,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"47130c50_7410390e","line":787,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":790,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"},{"line_number":791,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":1,"id":"dbd3cbe3_c5a01f6e","line":788,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            progress:"},{"line_number":786,"context_line":"            lasttime :"},{"line_number":787,"context_line":"        }]"},{"line_number":788,"context_line":"        \"\"\""},{"line_number":789,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":790,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"},{"line_number":791,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":1,"id":"67695dce_c97f0a6e","line":788,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":803,"context_line":"        return result"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def check_connected(self, pool):"},{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ea9c9ac_1ac2a847","line":806,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":803,"context_line":"        return result"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def check_connected(self, pool):"},{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c00cd0a_5f4e19bb","line":806,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def check_connected(self, pool):"},{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"89dc9aaa_fe2d00f3","line":807,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def check_connected(self, pool):"},{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"6840977f_8de18504","line":807,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":805,"context_line":"    def check_connected(self, pool):"},{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""},{"line_number":811,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"779b4be8_6766ecda","line":808,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":805,"context_line":"    def check_connected(self, pool):"},{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""},{"line_number":811,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4945125a_2fc2d0d3","line":808,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""},{"line_number":811,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":812,"context_line":"        ret \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"e4ecfc67_89eb1b4b","line":809,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        \"\"\""},{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""},{"line_number":811,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":812,"context_line":"        ret \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"c0c9962e_3a7b5c11","line":809,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""},{"line_number":811,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":812,"context_line":"        ret \u003d False"},{"line_number":813,"context_line":"        if not pool:"}],"source_content_type":"text/x-python","patch_set":1,"id":"90ba6741_f4e037b8","line":810,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        request storage pool info"},{"line_number":808,"context_line":"        if pool is not or exception occurr return false"},{"line_number":809,"context_line":"        :return:"},{"line_number":810,"context_line":"        \"\"\""},{"line_number":811,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":812,"context_line":"        ret \u003d False"},{"line_number":813,"context_line":"        if not pool:"}],"source_content_type":"text/x-python","patch_set":1,"id":"de2bb747_a15617d2","line":810,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            return self.result[key]"},{"line_number":876,"context_line":"        except KeyError:"},{"line_number":877,"context_line":"            msg \u003d (_(\u0027Did not find the expected key %(key)s in %(fun)s: \u0027"},{"line_number":878,"context_line":"                 \u0027%(raw)s.\u0027)"},{"line_number":879,"context_line":"               % {\u0027key\u0027: key, \u0027fun\u0027: self.ssh_cmd, \u0027raw\u0027: self.raw})"},{"line_number":880,"context_line":"            LOG.error(msg)"},{"line_number":881,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bc2765ad_27207c33","line":878,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":876,"context_line":"        except KeyError:"},{"line_number":877,"context_line":"            msg \u003d (_(\u0027Did not find the expected key %(key)s in %(fun)s: \u0027"},{"line_number":878,"context_line":"                 \u0027%(raw)s.\u0027)"},{"line_number":879,"context_line":"               % {\u0027key\u0027: key, \u0027fun\u0027: self.ssh_cmd, \u0027raw\u0027: self.raw})"},{"line_number":880,"context_line":"            LOG.error(msg)"},{"line_number":881,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":882,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5d5b9d28_7fc43181","line":879,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":920,"context_line":"    san.SanDriver,"},{"line_number":921,"context_line":"    driver.ManageableVD,"},{"line_number":922,"context_line":"    driver.MigrateVD,"},{"line_number":923,"context_line":"    driver.CloneableImageVD):"},{"line_number":924,"context_line":"    \"\"\"QSAN Storage volume driver."},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"    Version history:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7514a8dc_6846140a","line":923,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E125 continuation line with same indent as next logical line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":959,"context_line":"            \u0027system_name\u0027: None,"},{"line_number":960,"context_line":"            \u0027system_id\u0027: None,"},{"line_number":961,"context_line":"            \u0027code_level\u0027: None,"},{"line_number":962,"context_line":"            \u0027version\u0027 : None"},{"line_number":963,"context_line":"        }"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        self._slave._active_backend_id \u003d kwargs.get(\u0027active_backend_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ab2825a_995bf187","line":962,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E203 whitespace before \u0027:\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"                    ssh, command, check_exit_code\u003dcheck_exit_code)"},{"line_number":1149,"context_line":"                return result"},{"line_number":1150,"context_line":"            except Exception as e:"},{"line_number":1151,"context_line":"                LOG.error(_(\u0027Error has occurred: %s\u0027), e)"},{"line_number":1152,"context_line":"                last_exception \u003d e"},{"line_number":1153,"context_line":"                if attempts \u003e 0:"},{"line_number":1154,"context_line":"                    greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5b6e20de_af48d137","line":1151,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"                    source_volume_name, snapshot_name)):"},{"line_number":1315,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1316,"context_line":"                data\u003d_(\u0027Snapshot %(snap)s no longer exists on storage \u0027"},{"line_number":1317,"context_line":"                        \u0027backend, possibly removed due to COW space \u0027"},{"line_number":1318,"context_line":"                        \u0027exhaustion. Delete this snapshot from Cinder \u0027"},{"line_number":1319,"context_line":"                        \u0027to restore consistency.\u0027) % {"},{"line_number":1320,"context_line":"                            \u0027snap\u0027: snapshot_name})"}],"source_content_type":"text/x-python","patch_set":1,"id":"5c6d6adc_2ef25e1e","line":1317,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1351,"context_line":"        if self._slave.check_replicated_enable("},{"line_number":1352,"context_line":"                context.get_admin_context(),"},{"line_number":1353,"context_line":"                src_volume[\u0027volume_type_id\u0027]):"},{"line_number":1354,"context_line":"            #not support"},{"line_number":1355,"context_line":"            msg \u003d (_(\u0027Replication volume not support create clone volume.\u0027))"},{"line_number":1356,"context_line":"            LOG.error(msg)"},{"line_number":1357,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c18bf020_8d4abe18","line":1354,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1367,"context_line":"                        volumeName, cloneName, pool_name,"},{"line_number":1368,"context_line":"                        target_size\u003dint(tgt_volume[\u0027size\u0027]))"},{"line_number":1369,"context_line":"                else:"},{"line_number":1370,"context_line":"                    self._helpers.clone_volume(volumeName, cloneName, pool_name)"},{"line_number":1371,"context_line":"            else:"},{"line_number":1372,"context_line":"                # Remove any existing local clone relationship before"},{"line_number":1373,"context_line":"                # creating new one"}],"source_content_type":"text/x-python","patch_set":1,"id":"4c11ebff_efbe2181","line":1370,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"        return pool_stats"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"    def local_clone_copy(self, volume, clone, action\u003dNone, snapshot\u003dNone):"},{"line_number":1483,"context_line":"        \"\"\"Perform a local clone copy from volume to clone target.\"\"\""},{"line_number":1484,"context_line":"        LOG.debug(\u0027[local_clone_copy] enter: volume\u003d%s, clone\u003d%s, \u0027"},{"line_number":1485,"context_line":"                  \u0027action\u003d%s, snapshot\u003d%s\u0027, volume, clone, action, snapshot)"}],"source_content_type":"text/x-python","patch_set":1,"id":"a22e0cce_7c7c410d","line":1482,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"            else:"},{"line_number":1493,"context_line":"                self._helpers.start_local_clone(volume, snapshot)"},{"line_number":1494,"context_line":"        else:"},{"line_number":1495,"context_line":"            LOG.error(_(\u0027%(action)s failed.\u0027), {\u0027action\u0027: action})"},{"line_number":1496,"context_line":"            raise exception.VolumeBackendAPIException(data\u003d_(\u0027clone failed!\u0027))"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"        LOG.debug(\u0027[local_clone_copy] Step 2: Waiting for copy to complete\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"70aff349_d51b1c6f","line":1495,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1501,"context_line":"            LOG.debug(\u0027[local_clone_copy] leave: %s completed successfully\u0027,"},{"line_number":1502,"context_line":"                      action)"},{"line_number":1503,"context_line":"        else:"},{"line_number":1504,"context_line":"            LOG.error(_(\u0027%(action)s failed.\u0027), {\u0027action\u0027: action})"},{"line_number":1505,"context_line":"            raise exception.VolumeBackendAPIException(data\u003d_(\u0027clone failed!\u0027))"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"    @coordination.synchronized(\u0027qsan-copy-{volume}-task\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d1ebcf4_f239e09a","line":1504,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"        interval \u003d self.configuration.qsan_copy_interval"},{"line_number":1520,"context_line":"        wait_status \u003d [\u0027Initiating\u0027, \u0027Rebuilding\u0027, \u0027Erasing\u0027,"},{"line_number":1521,"context_line":"                       \u0027Delayed rebuilding\u0027]"},{"line_number":1522,"context_line":"        ###All status"},{"line_number":1523,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1524,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","}],"source_content_type":"text/x-python","patch_set":1,"id":"8a22cf63_a57ee1bc","line":1522,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"        wait_status \u003d [\u0027Initiating\u0027, \u0027Rebuilding\u0027, \u0027Erasing\u0027,"},{"line_number":1521,"context_line":"                       \u0027Delayed rebuilding\u0027]"},{"line_number":1522,"context_line":"        ###All status"},{"line_number":1523,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1524,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","}],"source_content_type":"text/x-python","patch_set":1,"id":"2d1cc86b_5d5344cc","line":1523,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"                       \u0027Delayed rebuilding\u0027]"},{"line_number":1522,"context_line":"        ###All status"},{"line_number":1523,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1524,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"}],"source_content_type":"text/x-python","patch_set":1,"id":"e0909ea6_a9b3d2e8","line":1524,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"        ###All status"},{"line_number":1523,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1524,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1528,"context_line":"        ###All health"}],"source_content_type":"text/x-python","patch_set":1,"id":"fba55833_9f9bbab5","line":1525,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1524,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1528,"context_line":"        ###All health"},{"line_number":1529,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","}],"source_content_type":"text/x-python","patch_set":1,"id":"79c19a9e_be6b02db","line":1526,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1528,"context_line":"        ###All health"},{"line_number":1529,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1530,"context_line":"        ####\"Partially optimal\", \"N/A\"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"4222a0d6_ca0ad5ed","line":1527,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1525,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1528,"context_line":"        ###All health"},{"line_number":1529,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1530,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1531,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":1,"id":"29c9c071_281168ec","line":1528,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1528,"context_line":"        ###All health"},{"line_number":1529,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1530,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1531,"context_line":"        while True:"},{"line_number":1532,"context_line":"            rescan +\u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"c5668952_fba16146","line":1529,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1528,"context_line":"        ###All health"},{"line_number":1529,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1530,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1531,"context_line":"        while True:"},{"line_number":1532,"context_line":"            rescan +\u003d 1"},{"line_number":1533,"context_line":"            volumeinfo \u003d self._helpers.get_volume([volume,clone])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bbbe240d_a9ee3796","line":1530,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1531,"context_line":"        while True:"},{"line_number":1532,"context_line":"            rescan +\u003d 1"},{"line_number":1533,"context_line":"            volumeinfo \u003d self._helpers.get_volume([volume,clone])"},{"line_number":1534,"context_line":"            if len(volumeinfo) \u003d\u003d 2:"},{"line_number":1535,"context_line":"                for vol in volumeinfo:"},{"line_number":1536,"context_line":"                    if vol.get(\u0027type\u0027, \u0027\u0027) \u003d\u003d \u0027BACKUP\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"b6efd58f_8255977b","line":1533,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"                    if vol.get(\u0027type\u0027, \u0027\u0027) \u003d\u003d \u0027BACKUP\u0027:"},{"line_number":1537,"context_line":"                        if (vol[\u0027health\u0027] \u003d\u003d \u0027Optimal\u0027"},{"line_number":1538,"context_line":"                                and (vol[\u0027status\u0027] in wait_status)):"},{"line_number":1539,"context_line":"                            LOG.info("},{"line_number":1540,"context_line":"                                _(\u0027%(function)s %(action)s task,rescan \u0027"},{"line_number":1541,"context_line":"                                  \u0027%(scan)s times,clone %(clone)s  need \u0027"},{"line_number":1542,"context_line":"                                  \u0027wait,status is %(status)s,health is \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"b21dbee4_8a01946e","line":1539,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1549,"context_line":"                                 \u0027health\u0027: vol[\u0027health\u0027],"},{"line_number":1550,"context_line":"                                 \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":1551,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Cloning\u0027:"},{"line_number":1552,"context_line":"                        LOG.info("},{"line_number":1553,"context_line":"                            _(\u0027%(function)s %(action)s task:rescan \u0027"},{"line_number":1554,"context_line":"                              \u0027%(scan)s times,volume %(volume)s copy \u0027"},{"line_number":1555,"context_line":"                              \u0027process %(process)s%%.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"f6524466_9c9685d4","line":1552,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"        LOG.debug(\u0027[wait_volume_copy] leave: result\u003d%s\u0027, ret)"},{"line_number":1642,"context_line":"        return ret"},{"line_number":1643,"context_line":""},{"line_number":1644,"context_line":"    ###  replication interface"},{"line_number":1645,"context_line":"    @cinder_utils.synchronized(\u0027qsan-failover_host\u0027, external\u003dTrue)"},{"line_number":1646,"context_line":"    def failover_host(self, context, volumes, secondary_id\u003dNone, groups\u003dNone):"},{"line_number":1647,"context_line":"        LOG.info(\u0027[failover_host] enter: secondary_id\u003d%s\u0027, secondary_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2e110c21_b260fc11","line":1644,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1651,"context_line":"            raise exception.UnableToFailOver(reason\u003dmsg)"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"        if secondary_id \u003d\u003d self._slave.default_backend:"},{"line_number":1654,"context_line":"        ### fail back to default"},{"line_number":1655,"context_line":"            LOG.info(\u0027[failover_host] Replication will failback to default\u0027)"},{"line_number":1656,"context_line":"            (secondary_id,"},{"line_number":1657,"context_line":"             volumes_update,"}],"source_content_type":"text/x-python","patch_set":1,"id":"20b8ed9b_226e1449","line":1654,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E115 expected an indented block (comment)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1651,"context_line":"            raise exception.UnableToFailOver(reason\u003dmsg)"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"        if secondary_id \u003d\u003d self._slave.default_backend:"},{"line_number":1654,"context_line":"        ### fail back to default"},{"line_number":1655,"context_line":"            LOG.info(\u0027[failover_host] Replication will failback to default\u0027)"},{"line_number":1656,"context_line":"            (secondary_id,"},{"line_number":1657,"context_line":"             volumes_update,"}],"source_content_type":"text/x-python","patch_set":1,"id":"687e8c68_63294be4","line":1654,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"                context, volumes, groups)"},{"line_number":1660,"context_line":"        elif (secondary_id is None"},{"line_number":1661,"context_line":"              or secondary_id \u003d\u003d self._slave.target[\u0027backend_id\u0027]):"},{"line_number":1662,"context_line":"        ### fail over"},{"line_number":1663,"context_line":"            LOG.info(\u0027[failover_host] Replication will failover to \u0027"},{"line_number":1664,"context_line":"                     \u0027secondary\u003d%s\u0027, self._slave.target[\u0027backend_id\u0027])"},{"line_number":1665,"context_line":"            (secondary_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7255bfaa_4cfe91e4","line":1662,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E115 expected an indented block (comment)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"                context, volumes, groups)"},{"line_number":1660,"context_line":"        elif (secondary_id is None"},{"line_number":1661,"context_line":"              or secondary_id \u003d\u003d self._slave.target[\u0027backend_id\u0027]):"},{"line_number":1662,"context_line":"        ### fail over"},{"line_number":1663,"context_line":"            LOG.info(\u0027[failover_host] Replication will failover to \u0027"},{"line_number":1664,"context_line":"                     \u0027secondary\u003d%s\u0027, self._slave.target[\u0027backend_id\u0027])"},{"line_number":1665,"context_line":"            (secondary_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"b1e583a1_fe2d6775","line":1662,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1747,"context_line":"        \"\"\""},{"line_number":1748,"context_line":"        capabilities \u003d host.get(\u0027capabilities\u0027) or {}"},{"line_number":1749,"context_line":"        source_backend \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1750,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1751,"context_line":"        source_pool \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1752,"context_line":"                                               \u0027pool\u0027)"},{"line_number":1753,"context_line":"        target_backend \u003d volume_utils.extract_host(host.get(\u0027host\u0027, \u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"64222bdf_b354a8a3","line":1750,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"        source_backend \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1750,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1751,"context_line":"        source_pool \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1752,"context_line":"                                               \u0027pool\u0027)"},{"line_number":1753,"context_line":"        target_backend \u003d volume_utils.extract_host(host.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1754,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1755,"context_line":"        target_pool \u003d capabilities.get(\u0027pool_name\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"58f01dee_5f4a98f2","line":1752,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1751,"context_line":"        source_pool \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1752,"context_line":"                                               \u0027pool\u0027)"},{"line_number":1753,"context_line":"        target_backend \u003d volume_utils.extract_host(host.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1754,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1755,"context_line":"        target_pool \u003d capabilities.get(\u0027pool_name\u0027)"},{"line_number":1756,"context_line":"        target_system_id \u003d capabilities.get(\u0027system_id\u0027)"},{"line_number":1757,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df09a8c7_dd8eece6","line":1754,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1906,"context_line":"        self.is_enable \u003d False"},{"line_number":1907,"context_line":"        self._master_iqn \u003d None"},{"line_number":1908,"context_line":"        self._active_backend_id \u003d None"},{"line_number":1909,"context_line":"        self.target \u003d {\u0027target_id\u0027 : \u00270\u0027}"},{"line_number":1910,"context_line":"        #self.volume_api \u003d volume_api.API()"},{"line_number":1911,"context_line":"        if device and device[0]:"},{"line_number":1912,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"e18c1fcb_6e2b46ab","line":1909,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E203 whitespace before \u0027:\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1907,"context_line":"        self._master_iqn \u003d None"},{"line_number":1908,"context_line":"        self._active_backend_id \u003d None"},{"line_number":1909,"context_line":"        self.target \u003d {\u0027target_id\u0027 : \u00270\u0027}"},{"line_number":1910,"context_line":"        #self.volume_api \u003d volume_api.API()"},{"line_number":1911,"context_line":"        if device and device[0]:"},{"line_number":1912,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"},{"line_number":1913,"context_line":"                                \u0027san_login\u0027, \u0027san_password\u0027, \u0027pool\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"98209f1c_7e6dd1f6","line":1910,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1909,"context_line":"        self.target \u003d {\u0027target_id\u0027 : \u00270\u0027}"},{"line_number":1910,"context_line":"        #self.volume_api \u003d volume_api.API()"},{"line_number":1911,"context_line":"        if device and device[0]:"},{"line_number":1912,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"},{"line_number":1913,"context_line":"                                \u0027san_login\u0027, \u0027san_password\u0027, \u0027pool\u0027]"},{"line_number":1914,"context_line":"                is_enable_key  \u003d True"},{"line_number":1915,"context_line":"                for key in required_key:"}],"source_content_type":"text/x-python","patch_set":1,"id":"518ba6ce_327d6e03","line":1912,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E117 over-indented","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1911,"context_line":"        if device and device[0]:"},{"line_number":1912,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"},{"line_number":1913,"context_line":"                                \u0027san_login\u0027, \u0027san_password\u0027, \u0027pool\u0027]"},{"line_number":1914,"context_line":"                is_enable_key  \u003d True"},{"line_number":1915,"context_line":"                for key in required_key:"},{"line_number":1916,"context_line":"                    if key not in device[0]:"},{"line_number":1917,"context_line":"                        is_enable_key \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"858f10c8_beba2c54","line":1914,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E221 multiple spaces before operator","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"        iqn_name \u003d self._master._helpers.get_iqn_name()"},{"line_number":2026,"context_line":"        LOG.debug(\"backend \u0027%(backend)s\u0027 iqn name is \u0027%(iqn)s\u0027.\","},{"line_number":2027,"context_line":"                  {\u0027backend\u0027:self._master._backend_name,\u0027iqn\u0027:iqn_name})"},{"line_number":2028,"context_line":"        if iqn_name.strip():"},{"line_number":2029,"context_line":"            self._master_iqn \u003d iqn_name"},{"line_number":2030,"context_line":"        if not self._helpers.get_pool_attrs(self.pools[0]):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fd26e0a_3b5815ed","line":2027,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"        iqn_name \u003d self._master._helpers.get_iqn_name()"},{"line_number":2026,"context_line":"        LOG.debug(\"backend \u0027%(backend)s\u0027 iqn name is \u0027%(iqn)s\u0027.\","},{"line_number":2027,"context_line":"                  {\u0027backend\u0027:self._master._backend_name,\u0027iqn\u0027:iqn_name})"},{"line_number":2028,"context_line":"        if iqn_name.strip():"},{"line_number":2029,"context_line":"            self._master_iqn \u003d iqn_name"},{"line_number":2030,"context_line":"        if not self._helpers.get_pool_attrs(self.pools[0]):"}],"source_content_type":"text/x-python","patch_set":1,"id":"0d15a01c_59448940","line":2027,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"        iqn_name \u003d self._master._helpers.get_iqn_name()"},{"line_number":2026,"context_line":"        LOG.debug(\"backend \u0027%(backend)s\u0027 iqn name is \u0027%(iqn)s\u0027.\","},{"line_number":2027,"context_line":"                  {\u0027backend\u0027:self._master._backend_name,\u0027iqn\u0027:iqn_name})"},{"line_number":2028,"context_line":"        if iqn_name.strip():"},{"line_number":2029,"context_line":"            self._master_iqn \u003d iqn_name"},{"line_number":2030,"context_line":"        if not self._helpers.get_pool_attrs(self.pools[0]):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a53737ee_ea7ae85a","line":2027,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2031,"context_line":"            self.is_enable \u003d False"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":""},{"line_number":2034,"context_line":"    def check_replicated_enable(self, ctxt, volume_type_id):"},{"line_number":2035,"context_line":"        LOG.debug(\u0027[check_replicated_enable] volume_type_id\u003d%s\u0027,"},{"line_number":2036,"context_line":"                  volume_type_id)"},{"line_number":2037,"context_line":"        volume_type \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"c4e74d02_00d87b91","line":2034,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"        return is_replicated"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":"    def create_volume_replication(self, volume):"},{"line_number":2052,"context_line":"        ### create backup volume"},{"line_number":2053,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2054,"context_line":"        LOG.debug(\u0027[create_volume_replication] enter: volume\u003d%s\u0027, name)"},{"line_number":2055,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"25441f6b_f8d0acac","line":2052,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":2059,"context_line":"            self._helpers.delete_volume(name, False)"},{"line_number":2060,"context_line":"            msg \u003d (_(\u0027Creating replication \\\u0027%s\\\u0027, create backup \u0027"},{"line_number":2061,"context_line":"                     \u0027volume failed.\u0027) % vol[\u0027name\u0027])"},{"line_number":2062,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2063,"context_line":""},{"line_number":2064,"context_line":"        ret \u003d self._initialize_relation(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ed2df7e_d02d5802","line":2061,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F821 undefined name \u0027vol\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2067,"context_line":"        else:"},{"line_number":2068,"context_line":"            self._helpers.delete_volume(name, False)"},{"line_number":2069,"context_line":"            msg \u003d (_(\u0027Creating replication \\\u0027%s\\\u0027, initialize relation \u0027"},{"line_number":2070,"context_line":"                     \u0027failed.\u0027) % vol[\u0027name\u0027])"},{"line_number":2071,"context_line":"            LOG.error(msg)"},{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":1,"id":"88036de1_253981ec","line":2070,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F821 undefined name \u0027vol\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"        return ret"},{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f528485_3ba0d3dc","line":2076,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2074,"context_line":""},{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"}],"source_content_type":"text/x-python","patch_set":1,"id":"d1d63164_425becbe","line":2077,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ccb799b5_908af51d","line":2078,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2075,"context_line":""},{"line_number":2076,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4e5de396_d228da77","line":2078,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fd56741c_094af7a8","line":2079,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4e01e7d0_aca136bc","line":2079,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9efdbee5_17cb2bfd","line":2080,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2077,"context_line":"        ### failback all volume"},{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"564b6af1_5118920e","line":2080,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"c6760133_827618b3","line":2081,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"        \"\"\""},{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"27bc187a_d06aa396","line":2081,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""},{"line_number":2085,"context_line":"        volumes_update \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"dd9df850_c9f75ac8","line":2082,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2079,"context_line":"        slave to master"},{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""},{"line_number":2085,"context_line":"        volumes_update \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"23d529b4_7217cdfe","line":2082,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""},{"line_number":2085,"context_line":"        volumes_update \u003d []"},{"line_number":2086,"context_line":"        groups_update \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"4585b582_19bfa293","line":2083,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"        :param ctx:"},{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""},{"line_number":2085,"context_line":"        volumes_update \u003d []"},{"line_number":2086,"context_line":"        groups_update \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"9e81249a_29c33ef6","line":2083,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""},{"line_number":2085,"context_line":"        volumes_update \u003d []"},{"line_number":2086,"context_line":"        groups_update \u003d []"},{"line_number":2087,"context_line":"        if not self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"927d0abc_2c9eb51a","line":2084,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"        :param volumes:"},{"line_number":2082,"context_line":"        :param groups:"},{"line_number":2083,"context_line":"        :return:"},{"line_number":2084,"context_line":"        \"\"\""},{"line_number":2085,"context_line":"        volumes_update \u003d []"},{"line_number":2086,"context_line":"        groups_update \u003d []"},{"line_number":2087,"context_line":"        if not self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"8efdc40b_a22ce624","line":2084,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"        slave_connected \u003d self.slave_helpers.check_connected("},{"line_number":2099,"context_line":"            self.slave_pools[0])"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        ###in use volume re attach.It will detach and attach again"},{"line_number":2102,"context_line":"        reattach_volumes \u003d []"},{"line_number":2103,"context_line":"        for vol in volumes:"},{"line_number":2104,"context_line":"            if vol.status \u003d\u003d \u0027in-use\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"e622b0c7_3a201f98","line":2101,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2167,"context_line":"        return self.default_backend, volumes_update, groups_update"},{"line_number":2168,"context_line":""},{"line_number":2169,"context_line":"    def replication_failover(self, ctx, volumes, groups):"},{"line_number":2170,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2171,"context_line":"        :param ctx:"},{"line_number":2172,"context_line":"        :param volumes:"},{"line_number":2173,"context_line":"        :param groups:"}],"source_content_type":"text/x-python","patch_set":1,"id":"d5ef20ee_69c789c7","line":2170,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2168,"context_line":""},{"line_number":2169,"context_line":"    def replication_failover(self, ctx, volumes, groups):"},{"line_number":2170,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2171,"context_line":"        :param ctx:"},{"line_number":2172,"context_line":"        :param volumes:"},{"line_number":2173,"context_line":"        :param groups:"},{"line_number":2174,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3420bf7b_eeac6472","line":2171,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2169,"context_line":"    def replication_failover(self, ctx, volumes, groups):"},{"line_number":2170,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2171,"context_line":"        :param ctx:"},{"line_number":2172,"context_line":"        :param volumes:"},{"line_number":2173,"context_line":"        :param groups:"},{"line_number":2174,"context_line":"        :return:"},{"line_number":2175,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"aace33fb_84988ab4","line":2172,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2170,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2171,"context_line":"        :param ctx:"},{"line_number":2172,"context_line":"        :param volumes:"},{"line_number":2173,"context_line":"        :param groups:"},{"line_number":2174,"context_line":"        :return:"},{"line_number":2175,"context_line":"        \"\"\""},{"line_number":2176,"context_line":"        volumes_update \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"06170b33_4e784606","line":2173,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2171,"context_line":"        :param ctx:"},{"line_number":2172,"context_line":"        :param volumes:"},{"line_number":2173,"context_line":"        :param groups:"},{"line_number":2174,"context_line":"        :return:"},{"line_number":2175,"context_line":"        \"\"\""},{"line_number":2176,"context_line":"        volumes_update \u003d []"},{"line_number":2177,"context_line":"        groups_update \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"899cf991_409e7f3f","line":2174,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2172,"context_line":"        :param volumes:"},{"line_number":2173,"context_line":"        :param groups:"},{"line_number":2174,"context_line":"        :return:"},{"line_number":2175,"context_line":"        \"\"\""},{"line_number":2176,"context_line":"        volumes_update \u003d []"},{"line_number":2177,"context_line":"        groups_update \u003d []"},{"line_number":2178,"context_line":"        if self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"8abf86d9_dddfff13","line":2175,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2190,"context_line":"        master_connected \u003d self.master_helpers.check_connected("},{"line_number":2191,"context_line":"            self.master_pools[0])"},{"line_number":2192,"context_line":""},{"line_number":2193,"context_line":"        ###in use volume re attach.It will detach and attach again"},{"line_number":2194,"context_line":"        reattach_volumes \u003d []"},{"line_number":2195,"context_line":"        for vol in volumes:"},{"line_number":2196,"context_line":"            if vol.status \u003d\u003d \u0027in-use\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4e9e1a64_f3c7e757","line":2193,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2261,"context_line":"        return self._active_backend_id, volumes_update, groups_update"},{"line_number":2262,"context_line":""},{"line_number":2263,"context_line":"    def _initialize_relation(self, volume):"},{"line_number":2264,"context_line":"        ### backup volume mapping,only iscsi"},{"line_number":2265,"context_line":"        volumeName \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2266,"context_line":"        LOG.debug(\u0027[_initialize_relation] enter: volume\u003d%s\u0027, volumeName)"},{"line_number":2267,"context_line":"        lun \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"ce126b1f_b40c7b59","line":2264,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2277,"context_line":"                data\u003d_(\u0027Creating replication, \u0027"},{"line_number":2278,"context_line":"                       \u0027mapping backup volume failed.\u0027))"},{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"        ### get target portal to create relation"},{"line_number":2281,"context_line":"        iscsi_port \u003d self._helpers.get_iscsi_connect(self.target[\u0027target_id\u0027])"},{"line_number":2282,"context_line":"        ret \u003d False"},{"line_number":2283,"context_line":"        if (iscsi_port and iscsi_port[\u0027portal\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"62df0a21_8b49f2ee","line":2280,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2324,"context_line":"        return ret"},{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"}],"source_content_type":"text/x-python","patch_set":1,"id":"f23b474a_7fdf275b","line":2327,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2324,"context_line":"        return ret"},{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"}],"source_content_type":"text/x-python","patch_set":1,"id":"e87e1041_36a7e59a","line":2327,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd4fb20f_4fdebf2f","line":2328,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"}],"source_content_type":"text/x-python","patch_set":1,"id":"1e763987_b42e7939","line":2328,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2326,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ef4edcf_3b32d6d8","line":2329,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2326,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"}],"source_content_type":"text/x-python","patch_set":1,"id":"cbdbd689_73492ce3","line":2329,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"}],"source_content_type":"text/x-python","patch_set":1,"id":"6284f597_4caa8e93","line":2330,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"        \"\"\""},{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"}],"source_content_type":"text/x-python","patch_set":1,"id":"618bfc39_62724c6f","line":2330,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6958e634_142a60d4","line":2331,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fcb4af07_376d93f2","line":2331,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6891e11f_cdab7142","line":2332,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2329,"context_line":"        check replication sync status."},{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a1679b12_aff026f8","line":2332,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"35f09c4f_732dcc15","line":2333,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"        syncing queuing,it will wait"},{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"02cb9d7c_501105d9","line":2333,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""},{"line_number":2337,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a796bbf_8b8c4cfc","line":2334,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"        unsync,it will start replication"},{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""},{"line_number":2337,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"38a153e2_263e1a82","line":2334,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""},{"line_number":2337,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2338,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c5638003_fdd2e583","line":2335,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"        noreplication,create lation and start replication"},{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""},{"line_number":2337,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2338,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f39cdb24_8920f1eb","line":2335,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""},{"line_number":2337,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2338,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"},{"line_number":2339,"context_line":"        interval \u003d 2"}],"source_content_type":"text/x-python","patch_set":1,"id":"af3793e9_ccf7fe23","line":2336,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"        synced,it will terminate"},{"line_number":2334,"context_line":"        :param volumename:"},{"line_number":2335,"context_line":"        :return:"},{"line_number":2336,"context_line":"        \"\"\""},{"line_number":2337,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2338,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"},{"line_number":2339,"context_line":"        interval \u003d 2"}],"source_content_type":"text/x-python","patch_set":1,"id":"a1b008d4_1a996ee8","line":2336,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2401,"context_line":"                     \u0027name\u0027: volume.display_name,"},{"line_number":2402,"context_line":"                     \u0027at\u0027: attachment_ref.connection_info["},{"line_number":2403,"context_line":"                         \u0027attachment_id\u0027]})"},{"line_number":2404,"context_line":"                ##detach \u003d self.volume_api.attachment_delete(ctx,"},{"line_number":2405,"context_line":"                ##    attachment_ref)"},{"line_number":2406,"context_line":"                client.delete_server_volume(ctx, attachment_ref.instance_uuid,"},{"line_number":2407,"context_line":"                                             volume.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"be868e73_60ccda70","line":2404,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2402,"context_line":"                     \u0027at\u0027: attachment_ref.connection_info["},{"line_number":2403,"context_line":"                         \u0027attachment_id\u0027]})"},{"line_number":2404,"context_line":"                ##detach \u003d self.volume_api.attachment_delete(ctx,"},{"line_number":2405,"context_line":"                ##    attachment_ref)"},{"line_number":2406,"context_line":"                client.delete_server_volume(ctx, attachment_ref.instance_uuid,"},{"line_number":2407,"context_line":"                                             volume.id)"},{"line_number":2408,"context_line":"                rescan \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9716be07_583c4261","line":2405,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2404,"context_line":"                ##detach \u003d self.volume_api.attachment_delete(ctx,"},{"line_number":2405,"context_line":"                ##    attachment_ref)"},{"line_number":2406,"context_line":"                client.delete_server_volume(ctx, attachment_ref.instance_uuid,"},{"line_number":2407,"context_line":"                                             volume.id)"},{"line_number":2408,"context_line":"                rescan \u003d 0"},{"line_number":2409,"context_line":"                interval \u003d 1"},{"line_number":2410,"context_line":"                is_detaching \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"88055beb_5b37bad0","line":2407,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":""},{"line_number":2445,"context_line":""},{"line_number":2446,"context_line":"        LOG.debug(\u0027[_replication_detach] leave\u0027)"},{"line_number":2447,"context_line":"        return True"},{"line_number":2448,"context_line":""},{"line_number":2449,"context_line":"    def _replication_attach(self, ctx, volumes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"941b2497_2518a75f","line":2446,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E303 too many blank lines (3)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":2458,"context_line":"                     \u0027volume\u0027: volume.id,"},{"line_number":2459,"context_line":"                     \u0027name\u0027: volume.display_name,"},{"line_number":2460,"context_line":"                     \u0027device\u0027: attachment_ref.mountpoint})"},{"line_number":2461,"context_line":"                #attach \u003d self.volume_api.attachment_update(ctx,"},{"line_number":2462,"context_line":"                #    attachment_ref, connector)"},{"line_number":2463,"context_line":"                client.create_server_volume("},{"line_number":2464,"context_line":"                    ctx, attachment_ref.instance_uuid, volume.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"af02843f_1807c4dd","line":2461,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import math"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import paramiko"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"78e5e9a7_a39d5d8f","line":18,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import paramiko\u0027 is identified as Third Party and \u0027import os\u0027 is identified as Stdlib.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import math"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import paramiko"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":2,"id":"a1edfbf3_cb6f89aa","line":19,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import random\u0027 should be before \u0027import paramiko\u0027 and in a different group.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import math"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import paramiko"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import threading"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fea78c5_2f53da51","line":19,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import random\u0027 is identified as Stdlib and \u0027import paramiko\u0027 is identified as Third Party.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":"from oslo_utils import excutils"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":"from cinder.compute import nova"},{"line_number":29,"context_line":"from cinder import context"},{"line_number":30,"context_line":"from cinder import coordination"},{"line_number":31,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":2,"id":"60b212b3_739c24ea","line":28,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H306: imports not in alphabetical order (oslo_utils.units, cinder.compute.nova)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":"from oslo_utils import excutils"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":"from cinder.compute import nova"},{"line_number":29,"context_line":"from cinder import context"},{"line_number":30,"context_line":"from cinder import coordination"},{"line_number":31,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":2,"id":"045d20b3_bdf90d36","line":28,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from cinder.compute import nova\u0027 is identified as Application and \u0027from oslo_utils import units\u0027 is identified as Third Party.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder import coordination"},{"line_number":31,"context_line":"from cinder import exception"},{"line_number":32,"context_line":"from cinder.i18n import _"},{"line_number":33,"context_line":"from cinder import interface"},{"line_number":34,"context_line":"from cinder import objects"},{"line_number":35,"context_line":"from cinder.objects import fields"},{"line_number":36,"context_line":"from cinder import utils as cinder_utils"}],"source_content_type":"text/x-python","patch_set":2,"id":"7e3a454c_3a90511f","line":33,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F401 \u0027cinder.interface\u0027 imported but unused","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9b8c2451_8bbc9b16","line":257,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"01eac7b8_d702c7f3","line":257,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"608bf0a6_a6a48dd6","line":258,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"91fbdf5c_fb9a0b51","line":258,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":262,"context_line":"                  volume_name, hostname, target)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1e48ed45_e2daace6","line":259,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def mkvolumehostmap(self, volume_name, hostname, target):"},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":262,"context_line":"                  volume_name, hostname, target)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b8a542b_6a521576","line":259,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":262,"context_line":"                  volume_name, hostname, target)"},{"line_number":263,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshMapVoltoHost\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b5ea8406_e7ee6998","line":260,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        Map volume to host."},{"line_number":259,"context_line":"        If volume already mapped and multihostmap is True, use the force param."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        LOG.debug(\u0027[mkvolumehostmap] volume\u003d%s, host\u003d%s, target\u003d%s\u0027,"},{"line_number":262,"context_line":"                  volume_name, hostname, target)"},{"line_number":263,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshMapVoltoHost\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"4bd5cd1b_4c06c1e8","line":260,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        try:"},{"line_number":269,"context_line":"            return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":270,"context_line":"        except Exception as ex:"},{"line_number":271,"context_line":"            raise exception.VolumeDriverException("},{"line_number":272,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8226e045_fa833b85","line":270,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F841 local variable \u0027ex\u0027 is assigned to but never used","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                message\u003d_(\u0027volume-to-host mapping error.\u0027))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def mkvolume_with_host_group(self, name, size, units, poolName,"},{"line_number":275,"context_line":"                                protocol\u003d\u0027WITH_ISCSI\u0027, allow_hosts\u003d\u0027*\u0027):"},{"line_number":276,"context_line":"        \"\"\"Create volume with host group."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        Uses the create_volume API which automatically adds RAID volumes"}],"source_content_type":"text/x-python","patch_set":2,"id":"b69b631e_b016afe8","line":275,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        LOG.debug(\u0027[ssh_start_replication] volume\u003d%s\u0027, volume)"},{"line_number":471,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshStartReplication\u0027]"},{"line_number":472,"context_line":"        if volume:"},{"line_number":473,"context_line":"            ssh_cmd.extend([\u0027--volume\u0027,volume])"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        self.run_ssh_no_output(ssh_cmd)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8f53150b_2f0ad6e9","line":473,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        LOG.debug(\u0027[ssh_get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":479,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshGetReplicationSync\u0027]"},{"line_number":480,"context_line":"        if volume:"},{"line_number":481,"context_line":"            ssh_cmd.extend([\u0027--volume\u0027,volume])"},{"line_number":482,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def ssh_terminate_replication(self, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"10d371b7_4ff2e07b","line":481,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":492,"context_line":"                  name, setting)"},{"line_number":493,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshSetVolumeProperty\u0027,"},{"line_number":494,"context_line":"                   \u0027--volume\u0027, name]"},{"line_number":495,"context_line":"        for key , value in setting.items():"},{"line_number":496,"context_line":"            ssh_cmd.extend([\u0027--\u0027+key,value])"},{"line_number":497,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6a1258a2_8cdfb98b","line":495,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E203 whitespace before \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshSetVolumeProperty\u0027,"},{"line_number":494,"context_line":"                   \u0027--volume\u0027, name]"},{"line_number":495,"context_line":"        for key , value in setting.items():"},{"line_number":496,"context_line":"            ssh_cmd.extend([\u0027--\u0027+key,value])"},{"line_number":497,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def ssh_schedule_replication(self, name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1dd648_45fa37b5","line":496,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E226 missing whitespace around arithmetic operator","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        ssh_cmd \u003d [\u0027cinder.php\u0027, \u0027Storage\u0027, \u0027sshSetVolumeProperty\u0027,"},{"line_number":494,"context_line":"                   \u0027--volume\u0027, name]"},{"line_number":495,"context_line":"        for key , value in setting.items():"},{"line_number":496,"context_line":"            ssh_cmd.extend([\u0027--\u0027+key,value])"},{"line_number":497,"context_line":"        return self.run_ssh_info(ssh_cmd)[\u0027arr\u0027]"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def ssh_schedule_replication(self, name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"72202080_7a55d3be","line":496,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            node \u003d storage_nodes[key]"},{"line_number":587,"context_line":"            wwpns \u003d set(node[\u0027WWPN\u0027])"},{"line_number":588,"context_line":"            resp \u003d self.client.lsportfc(node[\u0027id\u0027])"},{"line_number":589,"context_line":"            if resp !\u003d None:"},{"line_number":590,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":591,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":592,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3361574c_8295b043","line":589,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E711 comparison to None should be \u0027if cond is not None:\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":587,"context_line":"            wwpns \u003d set(node[\u0027WWPN\u0027])"},{"line_number":588,"context_line":"            resp \u003d self.client.lsportfc(node[\u0027id\u0027])"},{"line_number":589,"context_line":"            if resp !\u003d None:"},{"line_number":590,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":591,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":592,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"37bc452a_d9ece1e3","line":590,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            resp \u003d self.client.lsportfc(node[\u0027id\u0027])"},{"line_number":589,"context_line":"            if resp !\u003d None:"},{"line_number":590,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":591,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":592,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"            node[\u0027WWPN\u0027] \u003d list(wwpns)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a59769a4_8da57d1c","line":591,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            if resp !\u003d None:"},{"line_number":590,"context_line":"               for port_info in resp[\"FC\"]:"},{"line_number":591,"context_line":"                  if port_info[\u0027status\u0027] \u003d\u003d \u0027active\u0027:"},{"line_number":592,"context_line":"                      wwpns.add(port_info[\u0027WWPN\u0027])"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"            node[\u0027WWPN\u0027] \u003d list(wwpns)"},{"line_number":595,"context_line":"            LOG.debug(\u0027[add_fc_wwpns] WWPN on node %(node)s: %(wwpn)s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"a40d7fc4_0f007dad","line":592,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E111 indentation is not a multiple of 4","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":598,"context_line":"    def get_conn_fc_wwpns(self, host):"},{"line_number":599,"context_line":"        LOG.debug(\u0027[get_conn_fc_wwpns] host\u003d%s\u0027, host)"},{"line_number":600,"context_line":"        wwpns \u003d set()"},{"line_number":601,"context_line":"        resp \u003d self.client.getFcWwpns(\u0027\u0027,host\u003dhost)"},{"line_number":602,"context_line":"        for wwpn in resp.select(\u0027local_wwpn\u0027):"},{"line_number":603,"context_line":"            if wwpn is not None:"},{"line_number":604,"context_line":"                wwpns.add(wwpn)"}],"source_content_type":"text/x-python","patch_set":2,"id":"00ae49e3_ffa7ea67","line":601,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        LOG.debug(\u0027[delete_lun_map] volume\u003d%s, target\u003d%s, \u0027"},{"line_number":611,"context_line":"                  \u0027host\u003d%s, protocol\u003d%s\u0027,"},{"line_number":612,"context_line":"                  volumeName, target, host, protocol)"},{"line_number":613,"context_line":"        lun \u003d self.client.deleteLunMap(target, volumeName, host, protocol)"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"    def get_fc_info(self):"},{"line_number":616,"context_line":"        LOG.debug(\u0027[get_fc_info] Retrieving FC wwnn/wwpn info\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3137c4c0_425f806b","line":613,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F841 local variable \u0027lun\u0027 is assigned to but never used","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        self.client.ssh_start_replication(volume)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"}],"source_content_type":"text/x-python","patch_set":2,"id":"67c8d3a0_d47a0dd2","line":779,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        self.client.ssh_start_replication(volume)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"}],"source_content_type":"text/x-python","patch_set":2,"id":"9392013f_6247be7c","line":779,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"}],"source_content_type":"text/x-python","patch_set":2,"id":"ae6511c8_8b9fd413","line":780,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"}],"source_content_type":"text/x-python","patch_set":2,"id":"90b7ea23_040a9295","line":780,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":778,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"}],"source_content_type":"text/x-python","patch_set":2,"id":"05895988_de685161","line":781,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":778,"context_line":"    def get_replication_sync(self, volume\u003dNone):"},{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d71b80d_2392e4d1","line":781,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"}],"source_content_type":"text/x-python","patch_set":2,"id":"8813843c_a1007da1","line":782,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        \"\"\""},{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"}],"source_content_type":"text/x-python","patch_set":2,"id":"95862685_fba582f9","line":782,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d8a5f643_846f3716","line":783,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        get replication sync status"},{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2e2b649f_a8eb1b4d","line":783,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"}],"source_content_type":"text/x-python","patch_set":2,"id":"2de793af_105f914f","line":784,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        :return:"},{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"}],"source_content_type":"text/x-python","patch_set":2,"id":"df48b94d_569538be","line":784,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"}],"source_content_type":"text/x-python","patch_set":2,"id":"73074e7e_b94098cd","line":785,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":782,"context_line":"        [{"},{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"}],"source_content_type":"text/x-python","patch_set":2,"id":"716b8030_80cfa281","line":785,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5b8b9e03_3bf8b07b","line":786,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            name :"},{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"aac7bca6_bd442f09","line":786,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"eee936cc_1339da3a","line":787,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":784,"context_line":"            status : unsync synced syncing noreplication queuing"},{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a9d06fdd_4dd81081","line":787,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":791,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"240eb4d5_d4030931","line":788,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            speed : Mb/s"},{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":791,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"141ee899_cc17fe05","line":788,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":791,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"},{"line_number":792,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8d8da92_7d4b48d0","line":789,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            progress:"},{"line_number":787,"context_line":"            lasttime :"},{"line_number":788,"context_line":"        }]"},{"line_number":789,"context_line":"        \"\"\""},{"line_number":790,"context_line":"        LOG.debug(\u0027[get_replication_sync] volume\u003d%s\u0027, volume)"},{"line_number":791,"context_line":"        result \u003d self.client.ssh_get_replication_sync(volume)"},{"line_number":792,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":2,"id":"432a955a_346f1e19","line":789,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        return result"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def check_connected(self, pool):"},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"95ba2000_918fa990","line":807,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        return result"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def check_connected(self, pool):"},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d61f3203_695facc4","line":807,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def check_connected(self, pool):"},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"796d9599_c1f66fd0","line":808,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def check_connected(self, pool):"},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"b66d26b2_f3da30a0","line":808,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":806,"context_line":"    def check_connected(self, pool):"},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9b889ace_f6abf980","line":809,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":806,"context_line":"    def check_connected(self, pool):"},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"}],"source_content_type":"text/x-python","patch_set":2,"id":"998a0199_004cdde4","line":809,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":813,"context_line":"        ret \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"606cb5b4_b70b4e73","line":810,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":813,"context_line":"        ret \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"10a26377_f0a0ee4c","line":810,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":813,"context_line":"        ret \u003d False"},{"line_number":814,"context_line":"        if not pool:"}],"source_content_type":"text/x-python","patch_set":2,"id":"146e9ed3_0c7f9e37","line":811,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":808,"context_line":"        request storage pool info"},{"line_number":809,"context_line":"        if pool is not or exception occurr return false"},{"line_number":810,"context_line":"        :return:"},{"line_number":811,"context_line":"        \"\"\""},{"line_number":812,"context_line":"        LOG.debug(\u0027[check_connected] pool\u003d%s\u0027, pool)"},{"line_number":813,"context_line":"        ret \u003d False"},{"line_number":814,"context_line":"        if not pool:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9c912476_faa37db5","line":811,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":876,"context_line":"            return self.result[key]"},{"line_number":877,"context_line":"        except KeyError:"},{"line_number":878,"context_line":"            msg \u003d (_(\u0027Did not find the expected key %(key)s in %(fun)s: \u0027"},{"line_number":879,"context_line":"                 \u0027%(raw)s.\u0027)"},{"line_number":880,"context_line":"               % {\u0027key\u0027: key, \u0027fun\u0027: self.ssh_cmd, \u0027raw\u0027: self.raw})"},{"line_number":881,"context_line":"            LOG.error(msg)"},{"line_number":882,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"94aff6bb_a8f45b5a","line":879,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        except KeyError:"},{"line_number":878,"context_line":"            msg \u003d (_(\u0027Did not find the expected key %(key)s in %(fun)s: \u0027"},{"line_number":879,"context_line":"                 \u0027%(raw)s.\u0027)"},{"line_number":880,"context_line":"               % {\u0027key\u0027: key, \u0027fun\u0027: self.ssh_cmd, \u0027raw\u0027: self.raw})"},{"line_number":881,"context_line":"            LOG.error(msg)"},{"line_number":882,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":883,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"d1dca03f_8a769207","line":880,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":921,"context_line":"    san.SanDriver,"},{"line_number":922,"context_line":"    driver.ManageableVD,"},{"line_number":923,"context_line":"    driver.MigrateVD,"},{"line_number":924,"context_line":"    driver.CloneableImageVD):"},{"line_number":925,"context_line":"    \"\"\"QSAN Storage volume driver."},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    Version history:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a87d4de_42be4c57","line":924,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E125 continuation line with same indent as next logical line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":960,"context_line":"            \u0027system_name\u0027: None,"},{"line_number":961,"context_line":"            \u0027system_id\u0027: None,"},{"line_number":962,"context_line":"            \u0027code_level\u0027: None,"},{"line_number":963,"context_line":"            \u0027version\u0027 : None"},{"line_number":964,"context_line":"        }"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"        self._slave._active_backend_id \u003d kwargs.get(\u0027active_backend_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"4e25a495_5a925112","line":963,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E203 whitespace before \u0027:\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                    source_volume_name, snapshot_name)):"},{"line_number":1316,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1317,"context_line":"                data\u003d_(\u0027Snapshot %(snap)s no longer exists on storage \u0027"},{"line_number":1318,"context_line":"                        \u0027backend, possibly removed due to COW space \u0027"},{"line_number":1319,"context_line":"                        \u0027exhaustion. Delete this snapshot from Cinder \u0027"},{"line_number":1320,"context_line":"                        \u0027to restore consistency.\u0027) % {"},{"line_number":1321,"context_line":"                            \u0027snap\u0027: snapshot_name})"}],"source_content_type":"text/x-python","patch_set":2,"id":"8444bdca_aa1c006e","line":1318,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"        if self._slave.check_replicated_enable("},{"line_number":1353,"context_line":"                context.get_admin_context(),"},{"line_number":1354,"context_line":"                src_volume[\u0027volume_type_id\u0027]):"},{"line_number":1355,"context_line":"            #not support"},{"line_number":1356,"context_line":"            msg \u003d (_(\u0027Replication volume not support create clone volume.\u0027))"},{"line_number":1357,"context_line":"            LOG.error(msg)"},{"line_number":1358,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"36827afe_8efb309f","line":1355,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1481,"context_line":"        return pool_stats"},{"line_number":1482,"context_line":""},{"line_number":1483,"context_line":""},{"line_number":1484,"context_line":"    def local_clone_copy(self, volume, clone, action\u003dNone, snapshot\u003dNone):"},{"line_number":1485,"context_line":"        \"\"\"Perform a local clone copy from volume to clone target.\"\"\""},{"line_number":1486,"context_line":"        LOG.debug(\u0027[local_clone_copy] enter: volume\u003d%s, clone\u003d%s, \u0027"},{"line_number":1487,"context_line":"                  \u0027action\u003d%s, snapshot\u003d%s\u0027, volume, clone, action, snapshot)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b5a4cf6_1f8388c4","line":1484,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"        interval \u003d self.configuration.qsan_copy_interval"},{"line_number":1522,"context_line":"        wait_status \u003d [\u0027Initiating\u0027, \u0027Rebuilding\u0027, \u0027Erasing\u0027,"},{"line_number":1523,"context_line":"                       \u0027Delayed rebuilding\u0027]"},{"line_number":1524,"context_line":"        ###All status"},{"line_number":1525,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1526,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","}],"source_content_type":"text/x-python","patch_set":2,"id":"c6230366_632034b4","line":1524,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1522,"context_line":"        wait_status \u003d [\u0027Initiating\u0027, \u0027Rebuilding\u0027, \u0027Erasing\u0027,"},{"line_number":1523,"context_line":"                       \u0027Delayed rebuilding\u0027]"},{"line_number":1524,"context_line":"        ###All status"},{"line_number":1525,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1526,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","}],"source_content_type":"text/x-python","patch_set":2,"id":"b6d92ebc_d995f911","line":1525,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"                       \u0027Delayed rebuilding\u0027]"},{"line_number":1524,"context_line":"        ###All status"},{"line_number":1525,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1526,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"}],"source_content_type":"text/x-python","patch_set":2,"id":"b7184a22_20e8d1ea","line":1526,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"        ###All status"},{"line_number":1525,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1526,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1530,"context_line":"        ###All health"}],"source_content_type":"text/x-python","patch_set":2,"id":"0d71e71d_16beb4b1","line":1527,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1525,"context_line":"        ###{\"Offline\", \"Online\", \"Initiating\","},{"line_number":1526,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1530,"context_line":"        ###All health"},{"line_number":1531,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","}],"source_content_type":"text/x-python","patch_set":2,"id":"32b8863d_babe88d0","line":1528,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"        ####\"Rebuilding\", \"Migrating\", \"Parity chking\","},{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1530,"context_line":"        ###All health"},{"line_number":1531,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1532,"context_line":"        ####\"Partially optimal\", \"N/A\"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"715dfc12_7ea8b17b","line":1529,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"        ####\"Cloning\", \"Rolling back\", \"Parity chking\","},{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1530,"context_line":"        ###All health"},{"line_number":1531,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1532,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1533,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b50e24d_8982fcbd","line":1530,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1528,"context_line":"        ####\"Replicating\", \"Erasing\", \"Moving\", \"Replacing\","},{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1530,"context_line":"        ###All health"},{"line_number":1531,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1532,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1533,"context_line":"        while True:"},{"line_number":1534,"context_line":"            rescan +\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"f071d746_5006e801","line":1531,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1529,"context_line":"        ####\"Reclaiming\", \"Delayed rebuilding\", \"Relocation\", \"N/A\"};"},{"line_number":1530,"context_line":"        ###All health"},{"line_number":1531,"context_line":"        ###{\"Optimal\", \"Degraded\", \"Deleted\", \"Missing\", \"Failed\","},{"line_number":1532,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1533,"context_line":"        while True:"},{"line_number":1534,"context_line":"            rescan +\u003d 1"},{"line_number":1535,"context_line":"            volumeinfo \u003d self._helpers.get_volume([volume,clone])"}],"source_content_type":"text/x-python","patch_set":2,"id":"a8cdc404_d0aea3e5","line":1532,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1532,"context_line":"        ####\"Partially optimal\", \"N/A\"}"},{"line_number":1533,"context_line":"        while True:"},{"line_number":1534,"context_line":"            rescan +\u003d 1"},{"line_number":1535,"context_line":"            volumeinfo \u003d self._helpers.get_volume([volume,clone])"},{"line_number":1536,"context_line":"            if len(volumeinfo) \u003d\u003d 2:"},{"line_number":1537,"context_line":"                for vol in volumeinfo:"},{"line_number":1538,"context_line":"                    if vol.get(\u0027type\u0027, \u0027\u0027) \u003d\u003d \u0027BACKUP\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"93a0944b_98264371","line":1535,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1538,"context_line":"                    if vol.get(\u0027type\u0027, \u0027\u0027) \u003d\u003d \u0027BACKUP\u0027:"},{"line_number":1539,"context_line":"                        if (vol[\u0027health\u0027] \u003d\u003d \u0027Optimal\u0027"},{"line_number":1540,"context_line":"                                and (vol[\u0027status\u0027] in wait_status)):"},{"line_number":1541,"context_line":"                            LOG.info("},{"line_number":1542,"context_line":"                                _(\u0027%(function)s %(action)s task,rescan \u0027"},{"line_number":1543,"context_line":"                                  \u0027%(scan)s times,clone %(clone)s  need \u0027"},{"line_number":1544,"context_line":"                                  \u0027wait,status is %(status)s,health is \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"87581e7f_a943509b","line":1541,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1551,"context_line":"                                 \u0027health\u0027: vol[\u0027health\u0027],"},{"line_number":1552,"context_line":"                                 \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":1553,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Cloning\u0027:"},{"line_number":1554,"context_line":"                        LOG.info("},{"line_number":1555,"context_line":"                            _(\u0027%(function)s %(action)s task:rescan \u0027"},{"line_number":1556,"context_line":"                              \u0027%(scan)s times,volume %(volume)s copy \u0027"},{"line_number":1557,"context_line":"                              \u0027process %(process)s%%.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"b91c663c_3c34ae32","line":1554,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1643,"context_line":"        LOG.debug(\u0027[wait_volume_copy] leave: result\u003d%s\u0027, ret)"},{"line_number":1644,"context_line":"        return ret"},{"line_number":1645,"context_line":""},{"line_number":1646,"context_line":"    ###  replication interface"},{"line_number":1647,"context_line":"    @cinder_utils.synchronized(\u0027qsan-failover_host\u0027, external\u003dTrue)"},{"line_number":1648,"context_line":"    def failover_host(self, context, volumes, secondary_id\u003dNone, groups\u003dNone):"},{"line_number":1649,"context_line":"        LOG.info(\u0027[failover_host] enter: secondary_id\u003d%s\u0027, secondary_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"296eadbd_1465d1f3","line":1646,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"            raise exception.UnableToFailOver(reason\u003dmsg)"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"        if secondary_id \u003d\u003d self._slave.default_backend:"},{"line_number":1656,"context_line":"        ### fail back to default"},{"line_number":1657,"context_line":"            LOG.info(\u0027[failover_host] Replication will failback to default\u0027)"},{"line_number":1658,"context_line":"            (secondary_id,"},{"line_number":1659,"context_line":"             volumes_update,"}],"source_content_type":"text/x-python","patch_set":2,"id":"87e94e48_37d5da10","line":1656,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E115 expected an indented block (comment)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"            raise exception.UnableToFailOver(reason\u003dmsg)"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"        if secondary_id \u003d\u003d self._slave.default_backend:"},{"line_number":1656,"context_line":"        ### fail back to default"},{"line_number":1657,"context_line":"            LOG.info(\u0027[failover_host] Replication will failback to default\u0027)"},{"line_number":1658,"context_line":"            (secondary_id,"},{"line_number":1659,"context_line":"             volumes_update,"}],"source_content_type":"text/x-python","patch_set":2,"id":"361409f6_444143ad","line":1656,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                context, volumes, groups)"},{"line_number":1662,"context_line":"        elif (secondary_id is None"},{"line_number":1663,"context_line":"              or secondary_id \u003d\u003d self._slave.target[\u0027backend_id\u0027]):"},{"line_number":1664,"context_line":"        ### fail over"},{"line_number":1665,"context_line":"            LOG.info(\u0027[failover_host] Replication will failover to \u0027"},{"line_number":1666,"context_line":"                     \u0027secondary\u003d%s\u0027, self._slave.target[\u0027backend_id\u0027])"},{"line_number":1667,"context_line":"            (secondary_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"584cae37_09a3edae","line":1664,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E115 expected an indented block (comment)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"                context, volumes, groups)"},{"line_number":1662,"context_line":"        elif (secondary_id is None"},{"line_number":1663,"context_line":"              or secondary_id \u003d\u003d self._slave.target[\u0027backend_id\u0027]):"},{"line_number":1664,"context_line":"        ### fail over"},{"line_number":1665,"context_line":"            LOG.info(\u0027[failover_host] Replication will failover to \u0027"},{"line_number":1666,"context_line":"                     \u0027secondary\u003d%s\u0027, self._slave.target[\u0027backend_id\u0027])"},{"line_number":1667,"context_line":"            (secondary_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"41c99e5d_9c994a13","line":1664,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"        \"\"\""},{"line_number":1750,"context_line":"        capabilities \u003d host.get(\u0027capabilities\u0027) or {}"},{"line_number":1751,"context_line":"        source_backend \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1752,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1753,"context_line":"        source_pool \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1754,"context_line":"                                               \u0027pool\u0027)"},{"line_number":1755,"context_line":"        target_backend \u003d volume_utils.extract_host(host.get(\u0027host\u0027, \u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"a969315c_94fa9568","line":1752,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1751,"context_line":"        source_backend \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1752,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1753,"context_line":"        source_pool \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1754,"context_line":"                                               \u0027pool\u0027)"},{"line_number":1755,"context_line":"        target_backend \u003d volume_utils.extract_host(host.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1756,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1757,"context_line":"        target_pool \u003d capabilities.get(\u0027pool_name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"19c1705b_e6b087ac","line":1754,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1753,"context_line":"        source_pool \u003d volume_utils.extract_host(volume.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1754,"context_line":"                                               \u0027pool\u0027)"},{"line_number":1755,"context_line":"        target_backend \u003d volume_utils.extract_host(host.get(\u0027host\u0027, \u0027\u0027),"},{"line_number":1756,"context_line":"                                                  \u0027backend\u0027)"},{"line_number":1757,"context_line":"        target_pool \u003d capabilities.get(\u0027pool_name\u0027)"},{"line_number":1758,"context_line":"        target_system_id \u003d capabilities.get(\u0027system_id\u0027)"},{"line_number":1759,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"76457495_bee4335d","line":1756,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1908,"context_line":"        self.is_enable \u003d False"},{"line_number":1909,"context_line":"        self._master_iqn \u003d None"},{"line_number":1910,"context_line":"        self._active_backend_id \u003d None"},{"line_number":1911,"context_line":"        self.target \u003d {\u0027target_id\u0027 : \u00270\u0027}"},{"line_number":1912,"context_line":"        #self.volume_api \u003d volume_api.API()"},{"line_number":1913,"context_line":"        if device and device[0]:"},{"line_number":1914,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5b340b91_904296e1","line":1911,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E203 whitespace before \u0027:\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1909,"context_line":"        self._master_iqn \u003d None"},{"line_number":1910,"context_line":"        self._active_backend_id \u003d None"},{"line_number":1911,"context_line":"        self.target \u003d {\u0027target_id\u0027 : \u00270\u0027}"},{"line_number":1912,"context_line":"        #self.volume_api \u003d volume_api.API()"},{"line_number":1913,"context_line":"        if device and device[0]:"},{"line_number":1914,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"},{"line_number":1915,"context_line":"                                \u0027san_login\u0027, \u0027san_password\u0027, \u0027pool\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"70ac777f_396b8d2e","line":1912,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1911,"context_line":"        self.target \u003d {\u0027target_id\u0027 : \u00270\u0027}"},{"line_number":1912,"context_line":"        #self.volume_api \u003d volume_api.API()"},{"line_number":1913,"context_line":"        if device and device[0]:"},{"line_number":1914,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"},{"line_number":1915,"context_line":"                                \u0027san_login\u0027, \u0027san_password\u0027, \u0027pool\u0027]"},{"line_number":1916,"context_line":"                is_enable_key  \u003d True"},{"line_number":1917,"context_line":"                for key in required_key:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d593cd7e_929fd5fe","line":1914,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E117 over-indented","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1913,"context_line":"        if device and device[0]:"},{"line_number":1914,"context_line":"                required_key \u003d [\u0027san_ip\u0027, \u0027backend_id\u0027,"},{"line_number":1915,"context_line":"                                \u0027san_login\u0027, \u0027san_password\u0027, \u0027pool\u0027]"},{"line_number":1916,"context_line":"                is_enable_key  \u003d True"},{"line_number":1917,"context_line":"                for key in required_key:"},{"line_number":1918,"context_line":"                    if key not in device[0]:"},{"line_number":1919,"context_line":"                        is_enable_key \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"27fe3349_bb324d82","line":1916,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E221 multiple spaces before operator","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"        iqn_name \u003d self._master._helpers.get_iqn_name()"},{"line_number":2028,"context_line":"        LOG.debug(\"backend \u0027%(backend)s\u0027 iqn name is \u0027%(iqn)s\u0027.\","},{"line_number":2029,"context_line":"                  {\u0027backend\u0027:self._master._backend_name,\u0027iqn\u0027:iqn_name})"},{"line_number":2030,"context_line":"        if iqn_name.strip():"},{"line_number":2031,"context_line":"            self._master_iqn \u003d iqn_name"},{"line_number":2032,"context_line":"        if not self._helpers.get_pool_attrs(self.pools[0]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"f205768b_57f15e60","line":2029,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"        iqn_name \u003d self._master._helpers.get_iqn_name()"},{"line_number":2028,"context_line":"        LOG.debug(\"backend \u0027%(backend)s\u0027 iqn name is \u0027%(iqn)s\u0027.\","},{"line_number":2029,"context_line":"                  {\u0027backend\u0027:self._master._backend_name,\u0027iqn\u0027:iqn_name})"},{"line_number":2030,"context_line":"        if iqn_name.strip():"},{"line_number":2031,"context_line":"            self._master_iqn \u003d iqn_name"},{"line_number":2032,"context_line":"        if not self._helpers.get_pool_attrs(self.pools[0]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d96df68_03fd9ace","line":2029,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"        iqn_name \u003d self._master._helpers.get_iqn_name()"},{"line_number":2028,"context_line":"        LOG.debug(\"backend \u0027%(backend)s\u0027 iqn name is \u0027%(iqn)s\u0027.\","},{"line_number":2029,"context_line":"                  {\u0027backend\u0027:self._master._backend_name,\u0027iqn\u0027:iqn_name})"},{"line_number":2030,"context_line":"        if iqn_name.strip():"},{"line_number":2031,"context_line":"            self._master_iqn \u003d iqn_name"},{"line_number":2032,"context_line":"        if not self._helpers.get_pool_attrs(self.pools[0]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fed16da7_40d323fc","line":2029,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2033,"context_line":"            self.is_enable \u003d False"},{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"    def check_replicated_enable(self, ctxt, volume_type_id):"},{"line_number":2037,"context_line":"        LOG.debug(\u0027[check_replicated_enable] volume_type_id\u003d%s\u0027,"},{"line_number":2038,"context_line":"                  volume_type_id)"},{"line_number":2039,"context_line":"        volume_type \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"199fedb1_66f6b0c4","line":2036,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2051,"context_line":"        return is_replicated"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"    def create_volume_replication(self, volume):"},{"line_number":2054,"context_line":"        ### create backup volume"},{"line_number":2055,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2056,"context_line":"        LOG.debug(\u0027[create_volume_replication] enter: volume\u003d%s\u0027, name)"},{"line_number":2057,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"90b0a001_0afec910","line":2054,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2075,"context_line":"        return ret"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"}],"source_content_type":"text/x-python","patch_set":2,"id":"59e4bf55_5e8bc614","line":2078,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d2aab131_15187f58","line":2079,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e631e6d6_8ea167b1","line":2080,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dd93d64a_b0d22cd6","line":2080,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"41f5582d_edbb9f52","line":2081,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"    def replication_failback(self, ctx, volumes, groups):"},{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"b0d19ae5_08105070","line":2081,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e0812baa_12aecbcd","line":2082,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2079,"context_line":"        ### failback all volume"},{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"09327c6c_07c12481","line":2082,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"e5bf673b_2b56ff1c","line":2083,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"        \"\"\""},{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4806e4_905f6862","line":2083,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""},{"line_number":2087,"context_line":"        volumes_update \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"156388a9_afe20350","line":2084,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"        slave to master"},{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""},{"line_number":2087,"context_line":"        volumes_update \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"78e91a0a_33db9fbf","line":2084,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""},{"line_number":2087,"context_line":"        volumes_update \u003d []"},{"line_number":2088,"context_line":"        groups_update \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"9913d7b9_6f85a4a6","line":2085,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2082,"context_line":"        :param ctx:"},{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""},{"line_number":2087,"context_line":"        volumes_update \u003d []"},{"line_number":2088,"context_line":"        groups_update \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"cd2c2548_1704e32d","line":2085,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""},{"line_number":2087,"context_line":"        volumes_update \u003d []"},{"line_number":2088,"context_line":"        groups_update \u003d []"},{"line_number":2089,"context_line":"        if not self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2c8d7d20_ae99ab41","line":2086,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2083,"context_line":"        :param volumes:"},{"line_number":2084,"context_line":"        :param groups:"},{"line_number":2085,"context_line":"        :return:"},{"line_number":2086,"context_line":"        \"\"\""},{"line_number":2087,"context_line":"        volumes_update \u003d []"},{"line_number":2088,"context_line":"        groups_update \u003d []"},{"line_number":2089,"context_line":"        if not self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c023c0ef_6b64ca3e","line":2086,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2100,"context_line":"        slave_connected \u003d self.slave_helpers.check_connected("},{"line_number":2101,"context_line":"            self.slave_pools[0])"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        ###in use volume re attach.It will detach and attach again"},{"line_number":2104,"context_line":"        reattach_volumes \u003d []"},{"line_number":2105,"context_line":"        for vol in volumes:"},{"line_number":2106,"context_line":"            if vol.status \u003d\u003d \u0027in-use\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"211e4027_300ee0f9","line":2103,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2169,"context_line":"        return self.default_backend, volumes_update, groups_update"},{"line_number":2170,"context_line":""},{"line_number":2171,"context_line":"    def replication_failover(self, ctx, volumes, groups):"},{"line_number":2172,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2173,"context_line":"        :param ctx:"},{"line_number":2174,"context_line":"        :param volumes:"},{"line_number":2175,"context_line":"        :param groups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ce3a408_a26d3928","line":2172,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2170,"context_line":""},{"line_number":2171,"context_line":"    def replication_failover(self, ctx, volumes, groups):"},{"line_number":2172,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2173,"context_line":"        :param ctx:"},{"line_number":2174,"context_line":"        :param volumes:"},{"line_number":2175,"context_line":"        :param groups:"},{"line_number":2176,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f9961819_f383e016","line":2173,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2171,"context_line":"    def replication_failover(self, ctx, volumes, groups):"},{"line_number":2172,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2173,"context_line":"        :param ctx:"},{"line_number":2174,"context_line":"        :param volumes:"},{"line_number":2175,"context_line":"        :param groups:"},{"line_number":2176,"context_line":"        :return:"},{"line_number":2177,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"2c06e92b_ce2bf439","line":2174,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2172,"context_line":"        \"\"\"Failover replication from master to slave."},{"line_number":2173,"context_line":"        :param ctx:"},{"line_number":2174,"context_line":"        :param volumes:"},{"line_number":2175,"context_line":"        :param groups:"},{"line_number":2176,"context_line":"        :return:"},{"line_number":2177,"context_line":"        \"\"\""},{"line_number":2178,"context_line":"        volumes_update \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"0873de51_4c5cd751","line":2175,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2173,"context_line":"        :param ctx:"},{"line_number":2174,"context_line":"        :param volumes:"},{"line_number":2175,"context_line":"        :param groups:"},{"line_number":2176,"context_line":"        :return:"},{"line_number":2177,"context_line":"        \"\"\""},{"line_number":2178,"context_line":"        volumes_update \u003d []"},{"line_number":2179,"context_line":"        groups_update \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"488b55d1_c6094db5","line":2176,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2174,"context_line":"        :param volumes:"},{"line_number":2175,"context_line":"        :param groups:"},{"line_number":2176,"context_line":"        :return:"},{"line_number":2177,"context_line":"        \"\"\""},{"line_number":2178,"context_line":"        volumes_update \u003d []"},{"line_number":2179,"context_line":"        groups_update \u003d []"},{"line_number":2180,"context_line":"        if self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f4e33a83_809973fa","line":2177,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2192,"context_line":"        master_connected \u003d self.master_helpers.check_connected("},{"line_number":2193,"context_line":"            self.master_pools[0])"},{"line_number":2194,"context_line":""},{"line_number":2195,"context_line":"        ###in use volume re attach.It will detach and attach again"},{"line_number":2196,"context_line":"        reattach_volumes \u003d []"},{"line_number":2197,"context_line":"        for vol in volumes:"},{"line_number":2198,"context_line":"            if vol.status \u003d\u003d \u0027in-use\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"08c25a38_49ae6d02","line":2195,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2263,"context_line":"        return self._active_backend_id, volumes_update, groups_update"},{"line_number":2264,"context_line":""},{"line_number":2265,"context_line":"    def _initialize_relation(self, volume):"},{"line_number":2266,"context_line":"        ### backup volume mapping,only iscsi"},{"line_number":2267,"context_line":"        volumeName \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2268,"context_line":"        LOG.debug(\u0027[_initialize_relation] enter: volume\u003d%s\u0027, volumeName)"},{"line_number":2269,"context_line":"        lun \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"a5740c86_77ffaee4","line":2266,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2279,"context_line":"                data\u003d_(\u0027Creating replication, \u0027"},{"line_number":2280,"context_line":"                       \u0027mapping backup volume failed.\u0027))"},{"line_number":2281,"context_line":""},{"line_number":2282,"context_line":"        ### get target portal to create relation"},{"line_number":2283,"context_line":"        iscsi_port \u003d self._helpers.get_iscsi_connect(self.target[\u0027target_id\u0027])"},{"line_number":2284,"context_line":"        ret \u003d False"},{"line_number":2285,"context_line":"        if (iscsi_port and iscsi_port[\u0027portal\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"b3484596_8535875e","line":2282,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2326,"context_line":"        return ret"},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"}],"source_content_type":"text/x-python","patch_set":2,"id":"51912252_ec17310c","line":2329,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2326,"context_line":"        return ret"},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"}],"source_content_type":"text/x-python","patch_set":2,"id":"b51774a2_763626ff","line":2329,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"}],"source_content_type":"text/x-python","patch_set":2,"id":"3d1d3c8b_269bb6bc","line":2330,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"}],"source_content_type":"text/x-python","patch_set":2,"id":"1756c3cd_2ba95182","line":2330,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"}],"source_content_type":"text/x-python","patch_set":2,"id":"db8dd2a3_f5bf275e","line":2331,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"    def _terminate_relation(self, volume):"},{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"}],"source_content_type":"text/x-python","patch_set":2,"id":"37b7f367_9721ecc3","line":2331,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"}],"source_content_type":"text/x-python","patch_set":2,"id":"6ea907a9_797594f3","line":2332,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2329,"context_line":"        \"\"\""},{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"}],"source_content_type":"text/x-python","patch_set":2,"id":"efb239c1_70d0fe3d","line":2332,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"}],"source_content_type":"text/x-python","patch_set":2,"id":"50ab649b_f7d5e589","line":2333,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"        Replication master lunmap must be cancelled"},{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c226e72_88357987","line":2333,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c5c6aa2e_a8a37f88","line":2334,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"        check replication sync status."},{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fb36ae9_d0946752","line":2334,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ea734f9c_163e8fc9","line":2335,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"        syncing queuing,it will wait"},{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"239fb2d5_ea9206bc","line":2335,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""},{"line_number":2339,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":2,"id":"70df6f46_49cdaf3e","line":2336,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"        unsync,it will start replication"},{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""},{"line_number":2339,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bde1e6ea_d0f05f7f","line":2336,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""},{"line_number":2339,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2340,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"87c1d9bc_ea08f06d","line":2337,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2334,"context_line":"        noreplication,create lation and start replication"},{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""},{"line_number":2339,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2340,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"71c80540_e0daa248","line":2337,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""},{"line_number":2339,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2340,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"},{"line_number":2341,"context_line":"        interval \u003d 2"}],"source_content_type":"text/x-python","patch_set":2,"id":"7b67ec64_d49a362f","line":2338,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"        synced,it will terminate"},{"line_number":2336,"context_line":"        :param volumename:"},{"line_number":2337,"context_line":"        :return:"},{"line_number":2338,"context_line":"        \"\"\""},{"line_number":2339,"context_line":"        name \u003d VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":2340,"context_line":"        LOG.debug(\u0027[_terminate_relation] enter: volume\u003d%s\u0027, name)"},{"line_number":2341,"context_line":"        interval \u003d 2"}],"source_content_type":"text/x-python","patch_set":2,"id":"2a51aa77_5ad49bf1","line":2338,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2403,"context_line":"                     \u0027name\u0027: volume.display_name,"},{"line_number":2404,"context_line":"                     \u0027at\u0027: attachment_ref.connection_info["},{"line_number":2405,"context_line":"                         \u0027attachment_id\u0027]})"},{"line_number":2406,"context_line":"                ##detach \u003d self.volume_api.attachment_delete(ctx,"},{"line_number":2407,"context_line":"                ##    attachment_ref)"},{"line_number":2408,"context_line":"                client.delete_server_volume(ctx, attachment_ref.instance_uuid,"},{"line_number":2409,"context_line":"                                             volume.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"520a377c_4aca4f10","line":2406,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2404,"context_line":"                     \u0027at\u0027: attachment_ref.connection_info["},{"line_number":2405,"context_line":"                         \u0027attachment_id\u0027]})"},{"line_number":2406,"context_line":"                ##detach \u003d self.volume_api.attachment_delete(ctx,"},{"line_number":2407,"context_line":"                ##    attachment_ref)"},{"line_number":2408,"context_line":"                client.delete_server_volume(ctx, attachment_ref.instance_uuid,"},{"line_number":2409,"context_line":"                                             volume.id)"},{"line_number":2410,"context_line":"                rescan \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"da11c42e_b72e1dd9","line":2407,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E266 too many leading \u0027#\u0027 for block comment","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2406,"context_line":"                ##detach \u003d self.volume_api.attachment_delete(ctx,"},{"line_number":2407,"context_line":"                ##    attachment_ref)"},{"line_number":2408,"context_line":"                client.delete_server_volume(ctx, attachment_ref.instance_uuid,"},{"line_number":2409,"context_line":"                                             volume.id)"},{"line_number":2410,"context_line":"                rescan \u003d 0"},{"line_number":2411,"context_line":"                interval \u003d 1"},{"line_number":2412,"context_line":"                is_detaching \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"69ab4c80_5b343579","line":2409,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2445,"context_line":""},{"line_number":2446,"context_line":""},{"line_number":2447,"context_line":""},{"line_number":2448,"context_line":"        LOG.debug(\u0027[_replication_detach] leave\u0027)"},{"line_number":2449,"context_line":"        return True"},{"line_number":2450,"context_line":""},{"line_number":2451,"context_line":"    def _replication_attach(self, ctx, volumes):"}],"source_content_type":"text/x-python","patch_set":2,"id":"255aafb5_ed426fba","line":2448,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E303 too many blank lines (3)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":2460,"context_line":"                     \u0027volume\u0027: volume.id,"},{"line_number":2461,"context_line":"                     \u0027name\u0027: volume.display_name,"},{"line_number":2462,"context_line":"                     \u0027device\u0027: attachment_ref.mountpoint})"},{"line_number":2463,"context_line":"                #attach \u003d self.volume_api.attachment_update(ctx,"},{"line_number":2464,"context_line":"                #    attachment_ref, connector)"},{"line_number":2465,"context_line":"                client.create_server_volume("},{"line_number":2466,"context_line":"                    ctx, attachment_ref.instance_uuid, volume.id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"d5052e62_cc8071ed","line":2463,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}],"cinder/volume/drivers/qsan/qsan_fc.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from oslo_config import cfg"},{"line_number":2,"context_line":"from oslo_log import log as logging"},{"line_number":3,"context_line":"from oslo_utils import excutils"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4ebe0779_82b6ae81","line":1,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H102: Apache 2.0 license header not found","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    from cinder.volume.drivers.qsan import qsan_common"},{"line_number":11,"context_line":"except ImportError:"},{"line_number":12,"context_line":"    from qsan import qsan_common"},{"line_number":13,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e0a74bed_952002b5","line":13,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F401 \u0027cinder.zonemanager.utils as fczm_utils\u0027 imported but unused","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        \"\"\"Check connector for at least one enabled FC protocol.\"\"\""},{"line_number":49,"context_line":"        LOG.debug(\u0027[validate_connector] Checking FC connector\u0027)"},{"line_number":50,"context_line":"        if \u0027wwpns\u0027 not in connector:"},{"line_number":51,"context_line":"            LOG.error(_(\u0027The connector does not contain the required information.\u0027))"},{"line_number":52,"context_line":"            raise exception.InvalidConnectorException(missing \u003d \u0027wwpns\u0027)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @utils.synchronized(\u0027qsan-host\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"927fcb29_b4c129bc","line":51,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        \"\"\"Check connector for at least one enabled FC protocol.\"\"\""},{"line_number":49,"context_line":"        LOG.debug(\u0027[validate_connector] Checking FC connector\u0027)"},{"line_number":50,"context_line":"        if \u0027wwpns\u0027 not in connector:"},{"line_number":51,"context_line":"            LOG.error(_(\u0027The connector does not contain the required information.\u0027))"},{"line_number":52,"context_line":"            raise exception.InvalidConnectorException(missing \u003d \u0027wwpns\u0027)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @utils.synchronized(\u0027qsan-host\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ebfb544b_f7ea9da6","line":51,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (84 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    @utils.synchronized(\u0027qsan-host\u0027, external\u003dTrue)"},{"line_number":55,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        LOG.debug(\u0027[initialize_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":58,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":59,"context_line":"        volume_name \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":60,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"}],"source_content_type":"text/x-python","patch_set":1,"id":"7cfeb7ac_4946f67a","line":57,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (86 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        LOG.debug(\u0027[initialize_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":58,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":59,"context_line":"        volume_name \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":60,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5672d294_a7a5fae9","line":59,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        LOG.debug(\u0027[initialize_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":58,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":59,"context_line":"        volume_name \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":60,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"796de6dd_79012a71","line":59,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E226 missing whitespace around arithmetic operator","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        LOG.debug(\u0027[initialize_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":58,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":59,"context_line":"        volume_name \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":60,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        properties \u003d {}"},{"line_number":63,"context_line":"        properties[\u0027target_wwn\u0027] \u003d conn_wwpns"}],"source_content_type":"text/x-python","patch_set":1,"id":"edf56669_d84a50be","line":60,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E703 statement ends with a semicolon","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        properties[\u0027target_wwn\u0027] \u003d conn_wwpns"},{"line_number":64,"context_line":"        i_t_map \u003d {}"},{"line_number":65,"context_line":"        for i_wwpn in connector[\u0027wwpns\u0027]:"},{"line_number":66,"context_line":"            resultInfo \u003d self._helpers.fc_map_vol_to_host(volume_name, str(i_wwpn))"},{"line_number":67,"context_line":"            i_t_map[str(i_wwpn)] \u003d []"},{"line_number":68,"context_line":"            for t_wwpn in conn_wwpns:"},{"line_number":69,"context_line":"                i_t_map[i_wwpn].append(t_wwpn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f30cc54a_a754dceb","line":66,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        properties[\u0027initiator_target_map\u0027] \u003d i_t_map"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        LOG.debug(\u0027[initialize_connection] Step 1: FC mapping result\u003d%s\u0027, resultInfo)"},{"line_number":74,"context_line":"        if resultInfo \u003d\u003d \"noOnline\":"},{"line_number":75,"context_line":"            LOG.error(\u0027[initialize_connection] Volume %s is not Online, mount failed\u0027, volume_name)"},{"line_number":76,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bb269136_5e8d03e7","line":73,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (85 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        LOG.debug(\u0027[initialize_connection] Step 1: FC mapping result\u003d%s\u0027, resultInfo)"},{"line_number":74,"context_line":"        if resultInfo \u003d\u003d \"noOnline\":"},{"line_number":75,"context_line":"            LOG.error(\u0027[initialize_connection] Volume %s is not Online, mount failed\u0027, volume_name)"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            try:"},{"line_number":78,"context_line":"                properties[\u0027target_discovered\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"791bb8af_828dcfb5","line":75,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (99 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            except Exception:"},{"line_number":84,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":85,"context_line":"                    self.terminate_connection(volume, connector)"},{"line_number":86,"context_line":"                    LOG.error(_(\u0027initialize_connection: Failed to collect return properties for volume %(vol)s and connector %(conn)s.\\n\u0027), {\u0027vol\u0027: volume, \u0027conn\u0027: connector})"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            LOG.debug(\u0027[initialize_connection] leave: volume\u003d%(vol)s, properties\u003d%(prop)s\u0027,"},{"line_number":89,"context_line":"                      {\u0027vol\u0027: volume[\u0027id\u0027], \u0027prop\u0027: properties})"}],"source_content_type":"text/x-python","patch_set":1,"id":"76096b33_993436de","line":86,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            except Exception:"},{"line_number":84,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":85,"context_line":"                    self.terminate_connection(volume, connector)"},{"line_number":86,"context_line":"                    LOG.error(_(\u0027initialize_connection: Failed to collect return properties for volume %(vol)s and connector %(conn)s.\\n\u0027), {\u0027vol\u0027: volume, \u0027conn\u0027: connector})"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            LOG.debug(\u0027[initialize_connection] leave: volume\u003d%(vol)s, properties\u003d%(prop)s\u0027,"},{"line_number":89,"context_line":"                      {\u0027vol\u0027: volume[\u0027id\u0027], \u0027prop\u0027: properties})"}],"source_content_type":"text/x-python","patch_set":1,"id":"007b35a7_dd0e6213","line":86,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (175 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    self.terminate_connection(volume, connector)"},{"line_number":86,"context_line":"                    LOG.error(_(\u0027initialize_connection: Failed to collect return properties for volume %(vol)s and connector %(conn)s.\\n\u0027), {\u0027vol\u0027: volume, \u0027conn\u0027: connector})"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            LOG.debug(\u0027[initialize_connection] leave: volume\u003d%(vol)s, properties\u003d%(prop)s\u0027,"},{"line_number":89,"context_line":"                      {\u0027vol\u0027: volume[\u0027id\u0027], \u0027prop\u0027: properties})"},{"line_number":90,"context_line":"            return {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: properties, }"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ebb847b5_368117ea","line":88,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (91 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            LOG.debug(\u0027[initialize_connection] leave: volume\u003d%(vol)s, properties\u003d%(prop)s\u0027,"},{"line_number":89,"context_line":"                      {\u0027vol\u0027: volume[\u0027id\u0027], \u0027prop\u0027: properties})"},{"line_number":90,"context_line":"            return {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: properties, }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @utils.synchronized(\u0027qsan-host\u0027, external \u003d True)"},{"line_number":93,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4ab97134_0526d364","line":90,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @utils.synchronized(\u0027qsan-host\u0027, external \u003d True)"},{"line_number":93,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":94,"context_line":"        LOG.debug(\u0027[terminate_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":95,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":96,"context_line":"        volumeName \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":97,"context_line":"        info \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac491943_33bc9718","line":94,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (85 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":94,"context_line":"        LOG.debug(\u0027[terminate_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":95,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":96,"context_line":"        volumeName \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":97,"context_line":"        info \u003d {}"},{"line_number":98,"context_line":"        info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":99,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"}],"source_content_type":"text/x-python","patch_set":1,"id":"b5c500f0_409d61b9","line":96,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":94,"context_line":"        LOG.debug(\u0027[terminate_connection] enter: volume\u003d%(vol)s, connector\u003d%(conn)s\u0027,"},{"line_number":95,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":96,"context_line":"        volumeName \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":97,"context_line":"        info \u003d {}"},{"line_number":98,"context_line":"        info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":99,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"}],"source_content_type":"text/x-python","patch_set":1,"id":"2486bf7b_a2851208","line":96,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E226 missing whitespace around arithmetic operator","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        volumeName \u003d\"cinder-\"+volume[\u0027name\u0027][-12:]"},{"line_number":97,"context_line":"        info \u003d {}"},{"line_number":98,"context_line":"        info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":99,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"},{"line_number":100,"context_line":"        properties \u003d {}"},{"line_number":101,"context_line":"        i_t_map \u003d {}"},{"line_number":102,"context_line":"        for i_wwpn in connector[\u0027wwpns\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"48d9a752_f0f911ed","line":99,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E703 statement ends with a semicolon","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        info \u003d {}"},{"line_number":98,"context_line":"        info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":99,"context_line":"        conn_wwpns \u003d self._helpers.get_fc_info();"},{"line_number":100,"context_line":"        properties \u003d {}"},{"line_number":101,"context_line":"        i_t_map \u003d {}"},{"line_number":102,"context_line":"        for i_wwpn in connector[\u0027wwpns\u0027]:"},{"line_number":103,"context_line":"            i_t_map[str(i_wwpn)] \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"8ced6b81_96cef16e","line":100,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F841 local variable \u0027properties\u0027 is assigned to but never used","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                i_t_map[i_wwpn].append(t_wwpn)"},{"line_number":106,"context_line":"        info[\u0027data\u0027] \u003d {\u0027initiator_target_map\u0027: i_t_map}"},{"line_number":107,"context_line":"        target \u003d 0"},{"line_number":108,"context_line":"        result \u003d self._helpers.delete_lun_map(str(target),volumeName,connector[\u0027wwpns\u0027],\"WITH_FCP_ACL\")"},{"line_number":109,"context_line":"        LOG.debug(\u0027[terminate_connection] leave: volume\u003d%s\u0027, volume[\u0027id\u0027])"},{"line_number":110,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":1,"id":"58a40a43_73ca8b05","line":108,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                i_t_map[i_wwpn].append(t_wwpn)"},{"line_number":106,"context_line":"        info[\u0027data\u0027] \u003d {\u0027initiator_target_map\u0027: i_t_map}"},{"line_number":107,"context_line":"        target \u003d 0"},{"line_number":108,"context_line":"        result \u003d self._helpers.delete_lun_map(str(target),volumeName,connector[\u0027wwpns\u0027],\"WITH_FCP_ACL\")"},{"line_number":109,"context_line":"        LOG.debug(\u0027[terminate_connection] leave: volume\u003d%s\u0027, volume[\u0027id\u0027])"},{"line_number":110,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":1,"id":"99068870_ed60ab34","line":108,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                i_t_map[i_wwpn].append(t_wwpn)"},{"line_number":106,"context_line":"        info[\u0027data\u0027] \u003d {\u0027initiator_target_map\u0027: i_t_map}"},{"line_number":107,"context_line":"        target \u003d 0"},{"line_number":108,"context_line":"        result \u003d self._helpers.delete_lun_map(str(target),volumeName,connector[\u0027wwpns\u0027],\"WITH_FCP_ACL\")"},{"line_number":109,"context_line":"        LOG.debug(\u0027[terminate_connection] leave: volume\u003d%s\u0027, volume[\u0027id\u0027])"},{"line_number":110,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":1,"id":"df4bd40e_66017cc5","line":108,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E231 missing whitespace after \u0027,\u0027","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                i_t_map[i_wwpn].append(t_wwpn)"},{"line_number":106,"context_line":"        info[\u0027data\u0027] \u003d {\u0027initiator_target_map\u0027: i_t_map}"},{"line_number":107,"context_line":"        target \u003d 0"},{"line_number":108,"context_line":"        result \u003d self._helpers.delete_lun_map(str(target),volumeName,connector[\u0027wwpns\u0027],\"WITH_FCP_ACL\")"},{"line_number":109,"context_line":"        LOG.debug(\u0027[terminate_connection] leave: volume\u003d%s\u0027, volume[\u0027id\u0027])"},{"line_number":110,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":1,"id":"16d06b72_ec5ed9a2","line":108,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (103 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                i_t_map[i_wwpn].append(t_wwpn)"},{"line_number":106,"context_line":"        info[\u0027data\u0027] \u003d {\u0027initiator_target_map\u0027: i_t_map}"},{"line_number":107,"context_line":"        target \u003d 0"},{"line_number":108,"context_line":"        result \u003d self._helpers.delete_lun_map(str(target),volumeName,connector[\u0027wwpns\u0027],\"WITH_FCP_ACL\")"},{"line_number":109,"context_line":"        LOG.debug(\u0027[terminate_connection] leave: volume\u003d%s\u0027, volume[\u0027id\u0027])"},{"line_number":110,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b86292f_ddf3db60","line":108,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F841 local variable \u0027result\u0027 is assigned to but never used","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"}],"cinder/volume/drivers/qsan/qsan_iscsi.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\"Check connector for at least one enabled iSCSI protocol.\"\"\""},{"line_number":57,"context_line":"        LOG.debug(\u0027[validate_connector] Checking iSCSI connector\u0027)"},{"line_number":58,"context_line":"        if not connector.get(\u0027initiator\u0027):"},{"line_number":59,"context_line":"            LOG.error(_(\u0027The connector does not contain the required \u0027"},{"line_number":60,"context_line":"                          \u0027information.\u0027))"},{"line_number":61,"context_line":"            raise exception.InvalidConnectorException("},{"line_number":62,"context_line":"                missing\u003d\u0027initiator\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f4272e3c_5db89286","line":59,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: C312: Log messages should not be translated!","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        LOG.debug(\u0027[validate_connector] Checking iSCSI connector\u0027)"},{"line_number":58,"context_line":"        if not connector.get(\u0027initiator\u0027):"},{"line_number":59,"context_line":"            LOG.error(_(\u0027The connector does not contain the required \u0027"},{"line_number":60,"context_line":"                          \u0027information.\u0027))"},{"line_number":61,"context_line":"            raise exception.InvalidConnectorException("},{"line_number":62,"context_line":"                missing\u003d\u0027initiator\u0027)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"939d2bc0_137680bb","line":60,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"}],"cinder/volume/drivers/qsan/qsan_nvme.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        # With a shared group there is no per-host namespace mapping. A force"},{"line_number":72,"context_line":"        # detach without a connector must not revoke other hosts\u0027 access."},{"line_number":73,"context_line":"        if connector is None:"},{"line_number":74,"context_line":"            LOG.warning(\u0027NVMe force detach without connector: retaining mapping \u0027"},{"line_number":75,"context_line":"                        \u0027for volume %s\u0027, volume[\u0027id\u0027])"},{"line_number":76,"context_line":"            return result"},{"line_number":77,"context_line":"        attachments \u003d volume.get(\u0027volume_attachment\u0027) or []"}],"source_content_type":"text/x-python","patch_set":1,"id":"c8a32853_8ab85c68","line":74,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def migrate_volume(self, ctxt, volume, host):"},{"line_number":171,"context_line":"        # Use Cinder\u0027s host copy flow. The legacy backend-assisted migration"},{"line_number":172,"context_line":"        # deletes and replaces its target and carries iSCSI mapping assumptions."},{"line_number":173,"context_line":"        if volume.get(\u0027status\u0027) \u003d\u003d \u0027in-use\u0027:"},{"line_number":174,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":175,"context_line":"                data\u003d_(\u0027NVMe/TCP migration requires an available volume.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"15036873_61b2e976","line":172,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"}],"cinder/volume/drivers/qsan/qsan_rest.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import ipaddress"},{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":1,"id":"a014a9ec_8a4c5983","line":27,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: F401 \u0027json\u0027 imported but unused","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import ipaddress"},{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":1,"id":"74396cbf_1f97f332","line":29,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import requests\u0027 is identified as Third Party and \u0027import re\u0027 is identified as Stdlib.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from eventlet import greenthread"},{"line_number":33,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"b2ce6bea_9533cd37","line":30,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import time\u0027 should be before \u0027import requests\u0027 and in a different group.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from eventlet import greenthread"},{"line_number":33,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"a2f48246_73845705","line":30,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import time\u0027 is identified as Stdlib and \u0027import requests\u0027 is identified as Third Party.","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        LOG.debug(\u0027[QsanRest._login] Login successful\u0027)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _ensure_token(self):"},{"line_number":113,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":114,"context_line":"        needed.\"\"\""},{"line_number":115,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":116,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"1e998d42_b3a5b556","line":113,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        LOG.debug(\u0027[QsanRest._login] Login successful\u0027)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _ensure_token(self):"},{"line_number":113,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":114,"context_line":"        needed.\"\"\""},{"line_number":115,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":116,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"fc402a49_6f6439cf","line":113,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _ensure_token(self):"},{"line_number":113,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":114,"context_line":"        needed.\"\"\""},{"line_number":115,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":116,"context_line":"            return"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8efd7913_2ad5f92e","line":114,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _ensure_token(self):"},{"line_number":113,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":114,"context_line":"        needed.\"\"\""},{"line_number":115,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":116,"context_line":"            return"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"64b770f5_e8bbb626","line":114,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":639,"context_line":"            \u0027pool_id\u0027: vol.get(\u0027poolId\u0027, \u0027\u0027),"},{"line_number":640,"context_line":"            \u0027capacity\u0027: str(vol.get(\u0027totalSize\u0027, 0)),"},{"line_number":641,"context_line":"            \u0027size_mb\u0027: vol.get(\u0027totalSize\u0027, 0),"},{"line_number":642,"context_line":"            \u0027type\u0027: \u0027RAID Volume\u0027 if vol.get(\u0027type\u0027) \u003d\u003d \u0027RAID\u0027 else vol.get(\u0027type\u0027, \u0027\u0027),"},{"line_number":643,"context_line":"            \u0027used_capacity\u0027: str(vol.get(\u0027usedSize\u0027, 0)),"},{"line_number":644,"context_line":"            \u0027lun_id\u0027: vol.get(\u0027lunId\u0027, \u0027\u0027),"},{"line_number":645,"context_line":"            \u0027target_id\u0027: vol.get(\u0027targetId\u0027, \u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"a47adbd5_3c506213","line":642,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (88 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        }"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def mkvolume_with_host_group(self, name, size, units, poolName,"},{"line_number":650,"context_line":"                                  protocol\u003d\u0027WITH_ISCSI\u0027, allow_hosts\u003d\u0027*\u0027):"},{"line_number":651,"context_line":"        \"\"\"Create volume via REST API."},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        Mirrors QsanSSH.mkvolume_with_host_group()."}],"source_content_type":"text/x-python","patch_set":1,"id":"5e21e39f_347741ad","line":650,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        return {\u0027info\u0027: lun_id}"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def rmvolume_with_host_group(self, volume):"},{"line_number":754,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":755,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."}],"source_content_type":"text/x-python","patch_set":1,"id":"b9914154_68eb5cb7","line":754,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def rmvolume_with_host_group(self, volume):"},{"line_number":754,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":755,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":758,"context_line":"        We look up the volume ID by name first."}],"source_content_type":"text/x-python","patch_set":1,"id":"9cadb48d_003e5965","line":755,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":753,"context_line":"    def rmvolume_with_host_group(self, volume):"},{"line_number":754,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":755,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":758,"context_line":"        We look up the volume ID by name first."},{"line_number":759,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"aaab8935_6529961e","line":756,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":755,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":758,"context_line":"        We look up the volume ID by name first."},{"line_number":759,"context_line":"        \"\"\""},{"line_number":760,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume_with_host_group] volume\u003d%s\u0027, volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"abb4acf8_ebdf703c","line":757,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":758,"context_line":"        We look up the volume ID by name first."},{"line_number":759,"context_line":"        \"\"\""},{"line_number":760,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume_with_host_group] volume\u003d%s\u0027, volume)"},{"line_number":761,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"73f22cce_a81ac3b2","line":758,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":758,"context_line":"        We look up the volume ID by name first."},{"line_number":759,"context_line":"        \"\"\""},{"line_number":760,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume_with_host_group] volume\u003d%s\u0027, volume)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        vol \u003d self._find_volume_by_name(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"98d70275_ad4b5981","line":759,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":772,"context_line":"            volume, volume_id)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":775,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":776,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":777,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":778,"context_line":"        self.rmvolume_with_host_group(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"34b300c6_405c4610","line":775,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":772,"context_line":"            volume, volume_id)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":775,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":776,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":777,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":778,"context_line":"        self.rmvolume_with_host_group(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"a3d84525_e8730b33","line":775,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":775,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":776,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":777,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":778,"context_line":"        self.rmvolume_with_host_group(volume)"},{"line_number":779,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b3b6ee77_40e4c2c1","line":776,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":775,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":776,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":777,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":778,"context_line":"        self.rmvolume_with_host_group(volume)"},{"line_number":779,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a641ea67_c346a2d5","line":776,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        return {\u0027info\u0027: \u0027ok\u0027}"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    def mkstartlocalclone(self, volumeName, snapshot\u003dNone):"},{"line_number":819,"context_line":"        \"\"\"No-op in REST mode: clone completes synchronously in mklocalclone.\"\"\""},{"line_number":820,"context_line":"        LOG.debug(\u0027[QsanRest.mkstartlocalclone] volume\u003d%s (no-op)\u0027, volumeName)"},{"line_number":821,"context_line":"        return {}"},{"line_number":822,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"59fe2d1c_832877b0","line":819,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":854,"context_line":"        if not vol:"},{"line_number":855,"context_line":"            return False"},{"line_number":856,"context_line":"        snapshots \u003d self._list_volume_snapshots(vol.get(\u0027id\u0027))"},{"line_number":857,"context_line":"        return self._find_snapshot_by_name(snapshots, snapshot_name) is not None"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def delete_snap(self, volume_name, snapshot_name):"},{"line_number":860,"context_line":"        LOG.debug(\u0027[QsanRest.delete_snap] volume\u003d%s snapshot\u003d%s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d212a3e4_d168a620","line":857,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":960,"context_line":"            return self._patch(path, json\u003dpayload)"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"    def ssh_set_volume_property(self, volume, setting):"},{"line_number":963,"context_line":"        \"\"\"Rename volume via REST API (mirrors QsanSSH.ssh_set_volume_property)."},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        setting dict must contain \u0027new_name\u0027."},{"line_number":966,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"920ff8a3_06eb10f1","line":963,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"        # If the operator specified a specific iSCSI IP, honour it."},{"line_number":1223,"context_line":"        if self._iscsi_ip:"},{"line_number":1224,"context_line":"            filtered \u003d [r for r in result if str(r[\u0027ip\u0027]) \u003d\u003d str(self._iscsi_ip)]"},{"line_number":1225,"context_line":"            if filtered:"},{"line_number":1226,"context_line":"                result \u003d filtered"},{"line_number":1227,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e4bb7be3_87b3fb91","line":1224,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                   if group.get(\u0027name\u0027) \u003d\u003d name]"},{"line_number":1236,"context_line":"        if len(matches) !\u003d 1:"},{"line_number":1237,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1238,"context_line":"                data\u003d_(\u0027Expected exactly one NVMe host group named %s.\u0027) % name)"},{"line_number":1239,"context_line":"        group \u003d matches[0]"},{"line_number":1240,"context_line":"        if (group.get(\u0027protocol\u0027) !\u003d \u0027NVMeTCP\u0027 or"},{"line_number":1241,"context_line":"                str(group.get(\u0027volumeType\u0027, \u0027\u0027)).lower() !\u003d \u0027block\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"0d17f461_0357e299","line":1238,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"                portals.append(portal)"},{"line_number":1336,"context_line":"        if not portals:"},{"line_number":1337,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1338,"context_line":"                data\u003d_(\u0027No online IPv4 portal on the NVMe host group interfaces.\u0027))"},{"line_number":1339,"context_line":"        return {\u0027target_nqn\u0027: next(iter(nqns)), \u0027portals\u0027: portals}"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"    def initialize_nvme_connection(self, volume_name, host_nqn, group_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"995e9f0f_7dbf0093","line":1338,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1342,"context_line":"        vol \u003d self._find_volume_by_name(volume_name)"},{"line_number":1343,"context_line":"        if not vol or vol.get(\u0027state\u0027, vol.get(\u0027status\u0027)) !\u003d \u0027Online\u0027:"},{"line_number":1344,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1345,"context_line":"                data\u003d_(\u0027NVMe volume %s is missing or not Online.\u0027) % volume_name)"},{"line_number":1346,"context_line":"        group \u003d self.get_nvme_host_group(group_name)"},{"line_number":1347,"context_line":"        self._check_nvme_host(group, host_nqn)"},{"line_number":1348,"context_line":"        properties \u003d self.get_nvme_connection_properties(group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"db23b434_5dcfcad7","line":1345,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8acb8b1c3de85e0e4b725f90d1119e5fcccbdc2c","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                        break"},{"line_number":1366,"context_line":"                    if time.monotonic() \u003e\u003d deadline:"},{"line_number":1367,"context_line":"                        raise exception.VolumeBackendAPIException("},{"line_number":1368,"context_line":"                            data\u003d_(\u0027Timed out waiting for NVMe namespace mapping.\u0027))"},{"line_number":1369,"context_line":"                    greenthread.sleep(1)"},{"line_number":1370,"context_line":"            except Exception:"},{"line_number":1371,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"0d47fd8c_7e8775f3","line":1368,"updated":"2026-09-18 13:22:32.000000000","message":"pep8: E501 line too long (84 \u003e 79 characters)","commit_id":"84d932adb6e5b22f51f6a62c346cfe9ecb9128e0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import ipaddress"},{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":2,"id":"96b66140_629f53bd","line":27,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: F401 \u0027json\u0027 imported but unused","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import ipaddress"},{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from eventlet import greenthread"}],"source_content_type":"text/x-python","patch_set":2,"id":"77f41c43_d993e86e","line":29,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import requests\u0027 is identified as Third Party and \u0027import re\u0027 is identified as Stdlib.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from eventlet import greenthread"},{"line_number":33,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"c169ee46_d1f4515f","line":30,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027import time\u0027 should be before \u0027import requests\u0027 and in a different group.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import json"},{"line_number":28,"context_line":"import re"},{"line_number":29,"context_line":"import requests"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from eventlet import greenthread"},{"line_number":33,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"823907ec_95870cf2","line":30,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: I201 Missing newline between import groups. \u0027import time\u0027 is identified as Stdlib and \u0027import requests\u0027 is identified as Third Party.","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        LOG.debug(\u0027[QsanRest._login] Login successful\u0027)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _ensure_token(self):"},{"line_number":114,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":115,"context_line":"        needed.\"\"\""},{"line_number":116,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":117,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"242f1cd0_4a8be673","line":114,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        LOG.debug(\u0027[QsanRest._login] Login successful\u0027)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _ensure_token(self):"},{"line_number":114,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":115,"context_line":"        needed.\"\"\""},{"line_number":116,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":117,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"b2e82e72_918d7a04","line":114,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _ensure_token(self):"},{"line_number":114,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":115,"context_line":"        needed.\"\"\""},{"line_number":116,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":117,"context_line":"            return"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"99d6d436_d1a21c58","line":115,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _ensure_token(self):"},{"line_number":114,"context_line":"        \"\"\"Ensure we have a valid access token, refresh or re-login if"},{"line_number":115,"context_line":"        needed.\"\"\""},{"line_number":116,"context_line":"        if self._access_token and time.time() \u003c self._token_expire_time - 30:"},{"line_number":117,"context_line":"            return"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f1794359_2c0aa580","line":115,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":649,"context_line":"        }"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def mkvolume_with_host_group(self, name, size, units, poolName,"},{"line_number":652,"context_line":"                                  protocol\u003d\u0027WITH_ISCSI\u0027, allow_hosts\u003d\u0027*\u0027):"},{"line_number":653,"context_line":"        \"\"\"Create volume via REST API."},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        Mirrors QsanSSH.mkvolume_with_host_group()."}],"source_content_type":"text/x-python","patch_set":2,"id":"f4aef8b7_9a580d8a","line":652,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":753,"context_line":"        return {\u0027info\u0027: lun_id}"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"    def rmvolume_with_host_group(self, volume):"},{"line_number":756,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":757,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."}],"source_content_type":"text/x-python","patch_set":2,"id":"7e6e6eed_c96b02a3","line":756,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":754,"context_line":""},{"line_number":755,"context_line":"    def rmvolume_with_host_group(self, volume):"},{"line_number":756,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":757,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":760,"context_line":"        We look up the volume ID by name first."}],"source_content_type":"text/x-python","patch_set":2,"id":"946b5055_a26c4119","line":757,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":755,"context_line":"    def rmvolume_with_host_group(self, volume):"},{"line_number":756,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":757,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":760,"context_line":"        We look up the volume ID by name first."},{"line_number":761,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"70b43c34_76d9620c","line":758,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":756,"context_line":"        \"\"\"Delete volume via REST API. Mirrors"},{"line_number":757,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":760,"context_line":"        We look up the volume ID by name first."},{"line_number":761,"context_line":"        \"\"\""},{"line_number":762,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume_with_host_group] volume\u003d%s\u0027, volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e1f29ae4_c239dda0","line":759,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        QsanSSH.rmvolume_with_host_group()."},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":760,"context_line":"        We look up the volume ID by name first."},{"line_number":761,"context_line":"        \"\"\""},{"line_number":762,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume_with_host_group] volume\u003d%s\u0027, volume)"},{"line_number":763,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"4b543a7f_89f1171f","line":760,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        REST API needs volume ID (numeric), but SSH uses volume name."},{"line_number":760,"context_line":"        We look up the volume ID by name first."},{"line_number":761,"context_line":"        \"\"\""},{"line_number":762,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume_with_host_group] volume\u003d%s\u0027, volume)"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        vol \u003d self._find_volume_by_name(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"17111b20_1d466944","line":761,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":774,"context_line":"            volume, volume_id)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":777,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":778,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":779,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":780,"context_line":"        self.rmvolume_with_host_group(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"21239dae_99cbf85d","line":777,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":774,"context_line":"            volume, volume_id)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":777,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":778,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":779,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":780,"context_line":"        self.rmvolume_with_host_group(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"616fe42e_98554d16","line":777,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":777,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":778,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":779,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":780,"context_line":"        self.rmvolume_with_host_group(volume)"},{"line_number":781,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"a9855b87_5b1c7003","line":778,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def rmvolume(self, volume, force\u003dTrue):"},{"line_number":777,"context_line":"        \"\"\"Delete volume (without host group cleanup)."},{"line_number":778,"context_line":"        Mirrors QsanSSH.rmvolume().\"\"\""},{"line_number":779,"context_line":"        LOG.debug(\u0027[QsanRest.rmvolume] volume\u003d%s\u0027, volume)"},{"line_number":780,"context_line":"        self.rmvolume_with_host_group(volume)"},{"line_number":781,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8eea7f0e_ccdbc0fe","line":778,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1267,"context_line":"        if len(matches) !\u003d 1:"},{"line_number":1268,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1269,"context_line":"                data\u003d_(\u0027Expected exactly one NVMe host group named \u0027"},{"line_number":1270,"context_line":"                        \u0027%s.\u0027) % name)"},{"line_number":1271,"context_line":"        group \u003d matches[0]"},{"line_number":1272,"context_line":"        if (group.get(\u0027protocol\u0027) !\u003d \u0027NVMeTCP\u0027 or"},{"line_number":1273,"context_line":"                str(group.get(\u0027volumeType\u0027, \u0027\u0027)).lower() !\u003d \u0027block\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"08880159_e5b4b5d0","line":1270,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"56369e8e3d3dcd33782dd1d4e9ded9e86d8a9d95","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1278,"context_line":"                data\u003d_(\u0027NVMe host group has no backend id.\u0027))"},{"line_number":1279,"context_line":"        if not selected:"},{"line_number":1280,"context_line":"            self._nvme_host_groups[name] \u003d (str(group[\u0027id\u0027]), group.get(\u0027name\u0027))"},{"line_number":1281,"context_line":"            LOG.info(\u0027Selected NVMe host group %(name)s (id\u003d%(id)s)\u0027,"},{"line_number":1282,"context_line":"                     {\u0027name\u0027: group.get(\u0027name\u0027), \u0027id\u0027: group[\u0027id\u0027]})"},{"line_number":1283,"context_line":"        return group"}],"source_content_type":"text/x-python","patch_set":2,"id":"98bfc154_ac2fe20f","line":1280,"updated":"2026-09-21 12:35:26.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"14d861ace868b9cb2a556dff00861e080715ef34"}]}
