)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"mypy: annotate lvm"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I82f9693efa0d45e19dda428811ad04dadda3cf89"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1f621f24_55d15f2f","line":9,"updated":"2020-11-18 17:49:44.000000000","message":"Was there a blueprint or something like that to track all these patches?","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ded8de7d477056d6df134f1a2946c10137bd401b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"mypy: annotate lvm"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I82f9693efa0d45e19dda428811ad04dadda3cf89"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"6f650752_578daef7","line":9,"in_reply_to":"1f621f24_55d15f2f","updated":"2020-12-02 15:37:24.000000000","message":"https://review.opendev.org/q/project:openstack/cinder+AND+topic:%2522mypy%2522","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"326d3311df1b58c2fea619dd98c91dd367e0d884","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"60c67a95_2498f415","updated":"2024-05-22 11:38:01.000000000","message":"recheck\n\nopenstack-tox-py311 failed but logs are now gone","commit_id":"ec83abf804101a2f3d7e9558d6ce51386cbb69ec"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e95965fb0f7e1403f51b031580250c128fe50f67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"edd27036_cb7f0590","updated":"2024-12-05 23:16:11.000000000","message":"LGTM; not +W in case you want to look at the comment in drivers/lvm.py","commit_id":"168458325d72341b8e8f5f3d8cd78e70fdd6c542"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"8c9b8bda6160437d3fa27c626ffc03c247ba6fd3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"6d42b525_7f765f13","updated":"2026-03-19 14:06:36.000000000","message":"At the risk of being vulgar, holy crap I can\u0027t believe this is still unmerged since 2024!  Still LGTM.","commit_id":"0d11fdacb2478bf269edd2414d9a798adaa5675a"}],"cinder/brick/local_dev/lvm.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    LVM_CMD_PREFIX \u003d [\u0027env\u0027, \u0027LC_ALL\u003dC\u0027]"},{"line_number":41,"context_line":"    _supports_pvs_ignoreskippedcluster \u003d None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, vg_name, root_helper, create_vg\u003dFalse,"},{"line_number":44,"context_line":"                 physical_volumes\u003dNone, lvm_type\u003d\u0027default\u0027,"},{"line_number":45,"context_line":"                 executor\u003dputils.execute, lvm_conf\u003dNone,"},{"line_number":46,"context_line":"                 suppress_fd_warn\u003dFalse):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \"\"\"Initialize the LVM object."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_558ddf28","line":46,"range":{"start_line":43,"start_character":0,"end_line":46,"end_character":41},"updated":"2020-11-18 17:49:44.000000000","message":"Any reason why we are skipping these?","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        super(LVM, self).__init__(execute\u003dexecutor, root_helper\u003droot_helper)"},{"line_number":64,"context_line":"        self.vg_name \u003d vg_name"},{"line_number":65,"context_line":"        self.pv_list \u003d []"},{"line_number":66,"context_line":"        self.vg_size: float \u003d 0.0"},{"line_number":67,"context_line":"        self.vg_free_space: float \u003d 0.0"},{"line_number":68,"context_line":"        self.vg_lv_count: int \u003d 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_e139cdd8","line":65,"updated":"2020-11-18 17:49:44.000000000","message":"Shouldn\u0027t this be?\n\n  self.pv_list: list[dict] \u003d []","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.vg_free_space: float \u003d 0.0"},{"line_number":68,"context_line":"        self.vg_lv_count: int \u003d 0"},{"line_number":69,"context_line":"        self.vg_uuid: ty.Optional[str] \u003d None"},{"line_number":70,"context_line":"        self.vg_thin_pool \u003d None"},{"line_number":71,"context_line":"        self.vg_thin_pool_size: float \u003d 0.0"},{"line_number":72,"context_line":"        self.vg_thin_pool_free_space: float \u003d 0.0"},{"line_number":73,"context_line":"        self._supports_snapshot_lv_activation: ty.Optional[bool] \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_f5722b49","line":70,"updated":"2020-11-18 17:49:44.000000000","message":"Shouldn\u0027t this be?\n\n  self.vg_thin_pool: ty.Optional[str] \u003d None","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        return LVM._supports_pvs_ignoreskippedcluster"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    @staticmethod"},{"line_number":282,"context_line":"    def get_lv_info(root_helper,"},{"line_number":283,"context_line":"                    vg_name: str \u003d None,"},{"line_number":284,"context_line":"                    lv_name: str \u003d None) -\u003e list:"},{"line_number":285,"context_line":"        \"\"\"Retrieve info about LVs (all, in a VG, or a single LV)."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_4150810b","line":282,"updated":"2020-11-18 17:49:44.000000000","message":"Why aren\u0027t we specifying the type here (and in the other methods)?\n\n root_helper: str,","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"}],"cinder/volume/drivers/lvm.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from cinder.i18n import _"},{"line_number":35,"context_line":"from cinder.image import image_utils"},{"line_number":36,"context_line":"from cinder import objects"},{"line_number":37,"context_line":"from cinder import interface"},{"line_number":38,"context_line":"from cinder import utils"},{"line_number":39,"context_line":"from cinder.volume import configuration"},{"line_number":40,"context_line":"from cinder.volume import driver"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ee5bab50","line":37,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: H306: imports not in alphabetical order (cinder.objects, cinder.interface)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    def _volume_not_present(self, volume_name: str) -\u003e bool:"},{"line_number":143,"context_line":"        return self.vg.get_volume(volume_name) is None"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def _delete_volume(self, volume: objects.Volume, is_snapshot\u003dFalse) -\u003e None:"},{"line_number":146,"context_line":"        \"\"\"Deletes a logical volume.\"\"\""},{"line_number":147,"context_line":"        if self.configuration.volume_clear !\u003d \u0027none\u0027 and \\"},{"line_number":148,"context_line":"                self.configuration.lvm_type !\u003d \u0027thin\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_4e573727","line":145,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return snapshot_name"},{"line_number":206,"context_line":"        return snapshot_name[1:]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def _create_volume(self, name:str, size:str, lvm_type:str, mirror_count:int, vg\u003dNone) -\u003e None:"},{"line_number":209,"context_line":"        vg_ref \u003d self.vg"},{"line_number":210,"context_line":"        if vg is not None:"},{"line_number":211,"context_line":"            vg_ref \u003d vg"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_2e52c335","line":208,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return snapshot_name"},{"line_number":206,"context_line":"        return snapshot_name[1:]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def _create_volume(self, name:str, size:str, lvm_type:str, mirror_count:int, vg\u003dNone) -\u003e None:"},{"line_number":209,"context_line":"        vg_ref \u003d self.vg"},{"line_number":210,"context_line":"        if vg is not None:"},{"line_number":211,"context_line":"            vg_ref \u003d vg"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_6e35dbf6","line":208,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return snapshot_name"},{"line_number":206,"context_line":"        return snapshot_name[1:]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def _create_volume(self, name:str, size:str, lvm_type:str, mirror_count:int, vg\u003dNone) -\u003e None:"},{"line_number":209,"context_line":"        vg_ref \u003d self.vg"},{"line_number":210,"context_line":"        if vg is not None:"},{"line_number":211,"context_line":"            vg_ref \u003d vg"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_8e32ef0e","line":208,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return snapshot_name"},{"line_number":206,"context_line":"        return snapshot_name[1:]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def _create_volume(self, name:str, size:str, lvm_type:str, mirror_count:int, vg\u003dNone) -\u003e None:"},{"line_number":209,"context_line":"        vg_ref \u003d self.vg"},{"line_number":210,"context_line":"        if vg is not None:"},{"line_number":211,"context_line":"            vg_ref \u003d vg"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ce3867ef","line":208,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return snapshot_name"},{"line_number":206,"context_line":"        return snapshot_name[1:]"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def _create_volume(self, name:str, size:str, lvm_type:str, mirror_count:int, vg\u003dNone) -\u003e None:"},{"line_number":209,"context_line":"        vg_ref \u003d self.vg"},{"line_number":210,"context_line":"        if vg is not None:"},{"line_number":211,"context_line":"            vg_ref \u003d vg"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ae3b73e7","line":208,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (98 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":378,"context_line":"            # Enable sparse copy since lvm_type is \u0027thin\u0027"},{"line_number":379,"context_line":"            self._sparse_copy_volume \u003d True"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def create_volume(self, volume:objects.Volume) -\u003e None:"},{"line_number":382,"context_line":"        \"\"\"Creates a logical volume.\"\"\""},{"line_number":383,"context_line":"        mirror_count \u003d 0"},{"line_number":384,"context_line":"        if self.configuration.lvm_mirrors:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_0e26dfce","line":381,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                            self.configuration.lvm_type,"},{"line_number":390,"context_line":"                            mirror_count)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def update_migrated_volume(self, ctxt:context.RequestContext, volume:objects.Volume, new_volume:objects.Volume,"},{"line_number":393,"context_line":"                               original_volume_status:str) -\u003e ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":394,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_4e2c57ab","line":392,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                            self.configuration.lvm_type,"},{"line_number":390,"context_line":"                            mirror_count)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def update_migrated_volume(self, ctxt:context.RequestContext, volume:objects.Volume, new_volume:objects.Volume,"},{"line_number":393,"context_line":"                               original_volume_status:str) -\u003e ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":394,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_8e1b0f7f","line":392,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                            self.configuration.lvm_type,"},{"line_number":390,"context_line":"                            mirror_count)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def update_migrated_volume(self, ctxt:context.RequestContext, volume:objects.Volume, new_volume:objects.Volume,"},{"line_number":393,"context_line":"                               original_volume_status:str) -\u003e ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":394,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ee20cbb2","line":392,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                            self.configuration.lvm_type,"},{"line_number":390,"context_line":"                            mirror_count)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def update_migrated_volume(self, ctxt:context.RequestContext, volume:objects.Volume, new_volume:objects.Volume,"},{"line_number":393,"context_line":"                               original_volume_status:str) -\u003e ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":394,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_2e2763c9","line":392,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (115 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                            mirror_count)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def update_migrated_volume(self, ctxt:context.RequestContext, volume:objects.Volume, new_volume:objects.Volume,"},{"line_number":393,"context_line":"                               original_volume_status:str) -\u003e ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":394,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        This method should rename the back-end volume name(id) on the"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_6e1e7b70","line":393,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                            mirror_count)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def update_migrated_volume(self, ctxt:context.RequestContext, volume:objects.Volume, new_volume:objects.Volume,"},{"line_number":393,"context_line":"                               original_volume_status:str) -\u003e ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":394,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        This method should rename the back-end volume name(id) on the"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ce11875f","line":393,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (106 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            provider_location \u003d new_volume[\u0027provider_location\u0027]"},{"line_number":425,"context_line":"        return {\u0027_name_id\u0027: name_id, \u0027provider_location\u0027: provider_location}"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def create_volume_from_snapshot(self, volume:objects.Volume, snapshot:objects.Snapshot) -\u003e None:"},{"line_number":428,"context_line":"        \"\"\"Creates a volume from a snapshot.\"\"\""},{"line_number":429,"context_line":"        if self.configuration.lvm_type \u003d\u003d \u0027thin\u0027:"},{"line_number":430,"context_line":"            self.vg.create_lv_snapshot(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_0e0fff36","line":427,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            provider_location \u003d new_volume[\u0027provider_location\u0027]"},{"line_number":425,"context_line":"        return {\u0027_name_id\u0027: name_id, \u0027provider_location\u0027: provider_location}"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def create_volume_from_snapshot(self, volume:objects.Volume, snapshot:objects.Snapshot) -\u003e None:"},{"line_number":428,"context_line":"        \"\"\"Creates a volume from a snapshot.\"\"\""},{"line_number":429,"context_line":"        if self.configuration.lvm_type \u003d\u003d \u0027thin\u0027:"},{"line_number":430,"context_line":"            self.vg.create_lv_snapshot(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ae14134e","line":427,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            provider_location \u003d new_volume[\u0027provider_location\u0027]"},{"line_number":425,"context_line":"        return {\u0027_name_id\u0027: name_id, \u0027provider_location\u0027: provider_location}"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def create_volume_from_snapshot(self, volume:objects.Volume, snapshot:objects.Snapshot) -\u003e None:"},{"line_number":428,"context_line":"        \"\"\"Creates a volume from a snapshot.\"\"\""},{"line_number":429,"context_line":"        if self.configuration.lvm_type \u003d\u003d \u0027thin\u0027:"},{"line_number":430,"context_line":"            self.vg.create_lv_snapshot(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ee09eb30","line":427,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (100 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":457,"context_line":"                                 execute\u003dself._execute,"},{"line_number":458,"context_line":"                                 sparse\u003dself._sparse_copy_volume)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def delete_volume(self, volume:objects.Volume) -\u003e None:"},{"line_number":461,"context_line":"        \"\"\"Deletes a logical volume.\"\"\""},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        # NOTE(jdg):  We don\u0027t need to explicitly call"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_4e057713","line":460,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        self._delete_volume(volume)"},{"line_number":477,"context_line":"        LOG.info(\u0027Successfully deleted volume: %s\u0027, volume[\u0027id\u0027])"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def create_snapshot(self, snapshot:objects.Snapshot) -\u003e None:"},{"line_number":480,"context_line":"        \"\"\"Creates a snapshot.\"\"\""},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        self.vg.create_lv_snapshot(self._escape_snapshot(snapshot[\u0027name\u0027]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_2e000302","line":479,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":483,"context_line":"                                   snapshot[\u0027volume_name\u0027],"},{"line_number":484,"context_line":"                                   self.configuration.lvm_type)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def delete_snapshot(self, snapshot:objects.Snapshot) -\u003e None:"},{"line_number":487,"context_line":"        \"\"\"Deletes a snapshot.\"\"\""},{"line_number":488,"context_line":"        if self._volume_not_present(self._escape_snapshot(snapshot[\u0027name\u0027])):"},{"line_number":489,"context_line":"            # If the snapshot isn\u0027t present, then don\u0027t attempt to delete"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_91005203","line":486,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        self._delete_volume(snapshot, is_snapshot\u003dTrue)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def revert_to_snapshot(self,"},{"line_number":500,"context_line":"                           context:context.RequestContext,"},{"line_number":501,"context_line":"                           volume:objects.Volume,"},{"line_number":502,"context_line":"                           snapshot:objects.Snapshot) -\u003e None:"},{"line_number":503,"context_line":"        \"\"\"Revert a volume to a snapshot\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_7103fe0d","line":500,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"    def revert_to_snapshot(self,"},{"line_number":500,"context_line":"                           context:context.RequestContext,"},{"line_number":501,"context_line":"                           volume:objects.Volume,"},{"line_number":502,"context_line":"                           snapshot:objects.Snapshot) -\u003e None:"},{"line_number":503,"context_line":"        \"\"\"Revert a volume to a snapshot\"\"\""},{"line_number":504,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d1064a1c","line":501,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":499,"context_line":"    def revert_to_snapshot(self,"},{"line_number":500,"context_line":"                           context:context.RequestContext,"},{"line_number":501,"context_line":"                           volume:objects.Volume,"},{"line_number":502,"context_line":"                           snapshot:objects.Snapshot) -\u003e None:"},{"line_number":503,"context_line":"        \"\"\"Revert a volume to a snapshot\"\"\""},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        # NOTE(tommylikehu): We still can revert the volume because Cinder"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_b109162c","line":502,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            # Recreate the snapshot that was destroyed by the revert"},{"line_number":516,"context_line":"            self.create_snapshot(snapshot)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def local_path(self, volume:objects.Volume, vg:ty.Optional[str]\u003dNone) -\u003e str:"},{"line_number":519,"context_line":"        if vg is None:"},{"line_number":520,"context_line":"            vg \u003d self.configuration.volume_group"},{"line_number":521,"context_line":"        # NOTE(vish): stops deprecation warning"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_11144243","line":518,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            # Recreate the snapshot that was destroyed by the revert"},{"line_number":516,"context_line":"            self.create_snapshot(snapshot)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def local_path(self, volume:objects.Volume, vg:ty.Optional[str]\u003dNone) -\u003e str:"},{"line_number":519,"context_line":"        if vg is None:"},{"line_number":520,"context_line":"            vg \u003d self.configuration.volume_group"},{"line_number":521,"context_line":"        # NOTE(vish): stops deprecation warning"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_f10eee2f","line":518,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            # Recreate the snapshot that was destroyed by the revert"},{"line_number":516,"context_line":"            self.create_snapshot(snapshot)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def local_path(self, volume:objects.Volume, vg:ty.Optional[str]\u003dNone) -\u003e str:"},{"line_number":519,"context_line":"        if vg is None:"},{"line_number":520,"context_line":"            vg \u003d self.configuration.volume_group"},{"line_number":521,"context_line":"        # NOTE(vish): stops deprecation warning"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_3115063e","line":518,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E252 missing whitespace around parameter equals","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            # Recreate the snapshot that was destroyed by the revert"},{"line_number":516,"context_line":"            self.create_snapshot(snapshot)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def local_path(self, volume:objects.Volume, vg:ty.Optional[str]\u003dNone) -\u003e str:"},{"line_number":519,"context_line":"        if vg is None:"},{"line_number":520,"context_line":"            vg \u003d self.configuration.volume_group"},{"line_number":521,"context_line":"        # NOTE(vish): stops deprecation warning"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_511a3a6e","line":518,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E252 missing whitespace around parameter equals","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            # Recreate the snapshot that was destroyed by the revert"},{"line_number":516,"context_line":"            self.create_snapshot(snapshot)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def local_path(self, volume:objects.Volume, vg:ty.Optional[str]\u003dNone) -\u003e str:"},{"line_number":519,"context_line":"        if vg is None:"},{"line_number":520,"context_line":"            vg \u003d self.configuration.volume_group"},{"line_number":521,"context_line":"        # NOTE(vish): stops deprecation warning"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_9129728b","line":518,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        return \"/dev/mapper/%s-%s\" % (escaped_group, escaped_name)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def copy_image_to_volume(self,"},{"line_number":527,"context_line":"                             context:context.RequestContext,"},{"line_number":528,"context_line":"                             volume:objects.Volume,"},{"line_number":529,"context_line":"                             image_service:ty.Any,"},{"line_number":530,"context_line":"                             image_id:str) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_712c9e98","line":527,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def copy_image_to_volume(self,"},{"line_number":527,"context_line":"                             context:context.RequestContext,"},{"line_number":528,"context_line":"                             volume:objects.Volume,"},{"line_number":529,"context_line":"                             image_service:ty.Any,"},{"line_number":530,"context_line":"                             image_id:str) -\u003e None:"},{"line_number":531,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d11f6a58","line":528,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":526,"context_line":"    def copy_image_to_volume(self,"},{"line_number":527,"context_line":"                             context:context.RequestContext,"},{"line_number":528,"context_line":"                             volume:objects.Volume,"},{"line_number":529,"context_line":"                             image_service:ty.Any,"},{"line_number":530,"context_line":"                             image_id:str) -\u003e None:"},{"line_number":531,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":532,"context_line":"        image_utils.fetch_to_raw(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_b122b6a1","line":529,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":527,"context_line":"                             context:context.RequestContext,"},{"line_number":528,"context_line":"                             volume:objects.Volume,"},{"line_number":529,"context_line":"                             image_service:ty.Any,"},{"line_number":530,"context_line":"                             image_id:str) -\u003e None:"},{"line_number":531,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":532,"context_line":"        image_utils.fetch_to_raw(context,"},{"line_number":533,"context_line":"                                 image_service,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_113d62c3","line":530,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                                 size\u003dvolume[\u0027size\u0027])"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def copy_volume_to_image(self,"},{"line_number":540,"context_line":"                             context:context.RequestContext,"},{"line_number":541,"context_line":"                             volume:objects.Volume,"},{"line_number":542,"context_line":"                             image_service:ty.Any,"},{"line_number":543,"context_line":"                             image_meta:dict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_f1370ee2","line":540,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def copy_volume_to_image(self,"},{"line_number":540,"context_line":"                             context:context.RequestContext,"},{"line_number":541,"context_line":"                             volume:objects.Volume,"},{"line_number":542,"context_line":"                             image_service:ty.Any,"},{"line_number":543,"context_line":"                             image_meta:dict):"},{"line_number":544,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_51335af6","line":541,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":539,"context_line":"    def copy_volume_to_image(self,"},{"line_number":540,"context_line":"                             context:context.RequestContext,"},{"line_number":541,"context_line":"                             volume:objects.Volume,"},{"line_number":542,"context_line":"                             image_service:ty.Any,"},{"line_number":543,"context_line":"                             image_meta:dict):"},{"line_number":544,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":545,"context_line":"        volume_utils.upload_volume(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_312ea68b","line":542,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                             context:context.RequestContext,"},{"line_number":541,"context_line":"                             volume:objects.Volume,"},{"line_number":542,"context_line":"                             image_service:ty.Any,"},{"line_number":543,"context_line":"                             image_meta:dict):"},{"line_number":544,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":545,"context_line":"        volume_utils.upload_volume(context,"},{"line_number":546,"context_line":"                                   image_service,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_914e926c","line":543,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":548,"context_line":"                                   self.local_path(volume),"},{"line_number":549,"context_line":"                                   volume)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def create_cloned_volume(self, volume:objects.Volume, src_vref:dict):"},{"line_number":552,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":553,"context_line":"        if self.configuration.lvm_type \u003d\u003d \u0027thin\u0027:"},{"line_number":554,"context_line":"            self.vg.create_lv_snapshot(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_71513e0e","line":551,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":548,"context_line":"                                   self.local_path(volume),"},{"line_number":549,"context_line":"                                   volume)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def create_cloned_volume(self, volume:objects.Volume, src_vref:dict):"},{"line_number":552,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":553,"context_line":"        if self.configuration.lvm_type \u003d\u003d \u0027thin\u0027:"},{"line_number":554,"context_line":"            self.vg.create_lv_snapshot(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d1548a00","line":551,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        return self._stats"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"    def extend_volume(self, volume:objects.Volume, new_size:int):"},{"line_number":614,"context_line":"        \"\"\"Extend an existing volume\u0027s size.\"\"\""},{"line_number":615,"context_line":"        self.vg.extend_volume(volume[\u0027name\u0027],"},{"line_number":616,"context_line":"                              self._sizestr(new_size))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_1142823e","line":613,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        return self._stats"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"    def extend_volume(self, volume:objects.Volume, new_size:int):"},{"line_number":614,"context_line":"        \"\"\"Extend an existing volume\u0027s size.\"\"\""},{"line_number":615,"context_line":"        self.vg.extend_volume(volume[\u0027name\u0027],"},{"line_number":616,"context_line":"                              self._sizestr(new_size))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_b1575601","line":613,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":620,"context_line":"            LOG.exception(\u0027Error extending target after volume resize.\u0027)"},{"line_number":621,"context_line":"            raise exception.TargetUpdateFailed(volume_id\u003dvolume.id)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    def manage_existing(self, volume:objects.Volume, existing_ref:dict):"},{"line_number":624,"context_line":"        \"\"\"Manages an existing LV."},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"        Renames the LV to match the expected name for the volume."}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_51487a5a","line":623,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":620,"context_line":"            LOG.exception(\u0027Error extending target after volume resize.\u0027)"},{"line_number":621,"context_line":"            raise exception.TargetUpdateFailed(volume_id\u003dvolume.id)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    def manage_existing(self, volume:objects.Volume, existing_ref:dict):"},{"line_number":624,"context_line":"        \"\"\"Manages an existing LV."},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"        Renames the LV to match the expected name for the volume."}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_f13c2ec0","line":623,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":644,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":645,"context_line":"                data\u003dexception_message)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    def manage_existing_object_get_size(self, existing_object, existing_ref: dict,"},{"line_number":648,"context_line":"                                        object_type) -\u003e int:"},{"line_number":649,"context_line":"        \"\"\"Return size of an existing LV for manage existing volume/snapshot."},{"line_number":650,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_31434641","line":647,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":763,"context_line":"                  volume[\u0027id\u0027])"},{"line_number":764,"context_line":"        return True"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"    def migrate_volume(self, ctxt, volume, host, thin\u003dFalse, mirror_count\u003d0) -\u003e ty.Tuple[bool, ty.Optional[dict]]:"},{"line_number":767,"context_line":"        \"\"\"Optimize the migration if the destination is on the same server."},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"        If the specified host is another back-end on the same server, and"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_9177b2a0","line":766,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (114 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":842,"context_line":""},{"line_number":843,"context_line":"    # #######  Interface methods for DataPath (Target Driver) ########"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"    def ensure_export(self, context: context.RequestContext, volume: objects.Volume) -\u003e ty.Optional[dict]:"},{"line_number":846,"context_line":"        volume_path \u003d \"/dev/%s/%s\" % (self.configuration.volume_group,"},{"line_number":847,"context_line":"                                      volume[\u0027name\u0027])"},{"line_number":848,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_717ade87","line":845,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (106 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":852,"context_line":"            self.target_driver.ensure_export(context, volume, volume_path)"},{"line_number":853,"context_line":"        return model_update"},{"line_number":854,"context_line":""},{"line_number":855,"context_line":"    def create_export(self, context, volume, connector, vg\u003dNone) -\u003e ty.Dict[str, str]:"},{"line_number":856,"context_line":"        if vg is None:"},{"line_number":857,"context_line":"            vg \u003d self.configuration.volume_group"},{"line_number":858,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d16daacc","line":855,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (86 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":870,"context_line":"    def remove_export(self, context, volume) -\u003e None:"},{"line_number":871,"context_line":"        self.target_driver.remove_export(context, volume)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    def initialize_connection(self, volume:objects.Volume, connector:dict) -\u003e dict:"},{"line_number":874,"context_line":"        return self.target_driver.initialize_connection(volume, connector)"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"    def validate_connector(self, connector):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_116ba2b6","line":873,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":870,"context_line":"    def remove_export(self, context, volume) -\u003e None:"},{"line_number":871,"context_line":"        self.target_driver.remove_export(context, volume)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    def initialize_connection(self, volume:objects.Volume, connector:dict) -\u003e dict:"},{"line_number":874,"context_line":"        return self.target_driver.initialize_connection(volume, connector)"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"    def validate_connector(self, connector):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_b170f6a5","line":873,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f98962cfea7b0dc738d323b3a57e8dccab60a0a0","unresolved":false,"context_lines":[{"line_number":870,"context_line":"    def remove_export(self, context, volume) -\u003e None:"},{"line_number":871,"context_line":"        self.target_driver.remove_export(context, volume)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    def initialize_connection(self, volume:objects.Volume, connector:dict) -\u003e dict:"},{"line_number":874,"context_line":"        return self.target_driver.initialize_connection(volume, connector)"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"    def validate_connector(self, connector):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_f1654ee2","line":873,"updated":"2020-06-04 18:31:20.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"f3bb7c9ba296f03d3842bcf5017678e06c103e32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        return snapshot_name[1:]"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _create_volume(self, name: str, size: str, lvm_type: str,"},{"line_number":211,"context_line":"                       mirror_count: int, vg\u003dNone) -\u003e None:"},{"line_number":212,"context_line":"        vg_ref \u003d self.vg"},{"line_number":213,"context_line":"        if vg is not None:"},{"line_number":214,"context_line":"            vg_ref \u003d vg"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_015fa90e","line":211,"range":{"start_line":211,"start_character":42,"end_line":211,"end_character":44},"updated":"2020-11-18 17:49:44.000000000","message":"Why is there no type on vg?","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            multiattach\u003dTrue,"},{"line_number":294,"context_line":"            backend_state\u003d\u0027up\u0027"},{"line_number":295,"context_line":"        ))"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        data[\"pools\"].append(single_pool)"},{"line_number":298,"context_line":"        data[\"shared_targets\"] \u003d False"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_81a8d9db","line":296,"updated":"2020-11-18 17:49:44.000000000","message":"unrelated change...","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                               volume: objects.Volume,"},{"line_number":397,"context_line":"                               new_volume: objects.Volume,"},{"line_number":398,"context_line":"                               original_volume_status: str) -\u003e \\"},{"line_number":399,"context_line":"            ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":400,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        This method should rename the back-end volume name(id) on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_21e58539","line":399,"range":{"start_line":399,"start_character":20,"end_line":399,"end_character":36},"updated":"2020-11-18 17:49:44.000000000","message":"-1: We always return the keys, so I think this should just be str","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"c8b9483d516c19703f790c45e06df79ca6c7ed16","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                               volume: objects.Volume,"},{"line_number":397,"context_line":"                               new_volume: objects.Volume,"},{"line_number":398,"context_line":"                               original_volume_status: str) -\u003e \\"},{"line_number":399,"context_line":"            ty.Dict[ty.Optional[str], ty.Optional[str]]:"},{"line_number":400,"context_line":"        \"\"\"Return model update from LVM for migrated volume."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        This method should rename the back-end volume name(id) on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"60c71204_20dd6e04","line":399,"range":{"start_line":399,"start_character":20,"end_line":399,"end_character":36},"in_reply_to":"1f621f24_21e58539","updated":"2020-12-03 22:57:32.000000000","message":"Done","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if self._volume_not_present(volume[\u0027name\u0027]):"},{"line_number":476,"context_line":"            # If the volume isn\u0027t present, then don\u0027t attempt to delete"},{"line_number":477,"context_line":"            return    # FIXED"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        if self.vg.lv_has_snapshot(volume[\u0027name\u0027]):"},{"line_number":480,"context_line":"            LOG.error(\u0027Unable to delete due to existing snapshot \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_c1c01180","line":477,"range":{"start_line":477,"start_character":22,"end_line":477,"end_character":29},"updated":"2020-11-18 17:49:44.000000000","message":"I understand why you removed it, but what\u0027s the purpose of  this comment ourside of the review?","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                data\u003dexception_message)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    def manage_existing_object_get_size(self,"},{"line_number":649,"context_line":"                                        existing_object,"},{"line_number":650,"context_line":"                                        existing_ref: dict,"},{"line_number":651,"context_line":"                                        object_type) -\u003e int:"},{"line_number":652,"context_line":"        \"\"\"Return size of an existing LV for manage existing volume/snapshot."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_e1f6edd8","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"updated":"2020-11-18 17:49:44.000000000","message":"Doesn\u0027t look like we use this parameter, right?  So could we just be explicit and say \"ty.Any\" to be explicit about it?","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6094415931c348a991b8ad685499bfc2311e7a06","unresolved":false,"context_lines":[{"line_number":684,"context_line":"                data\u003dexception_message)"},{"line_number":685,"context_line":"        return lv_size"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def manage_existing_get_size(self, volume, existing_ref) -\u003e int:"},{"line_number":688,"context_line":"        return self.manage_existing_object_get_size(volume, existing_ref,"},{"line_number":689,"context_line":"                                                    \"volume\")"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_01fe89ad","line":687,"range":{"start_line":687,"start_character":39,"end_line":687,"end_character":60},"updated":"2020-11-18 17:49:44.000000000","message":"Why no types here and the next 10 methods or so?","commit_id":"2c1291fcf6c45f6bc4f6a7b1b382aec6f6b3c15f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"49197e85c3bd3bdc0643b9fef9e66ea3e201a525","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        self._stats \u003d {}"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @classmethod"},{"line_number":120,"context_line":"    def get_driver_options(cls) -\u003e dict:"},{"line_number":121,"context_line":"        # Imports required to have config options"},{"line_number":122,"context_line":"        from cinder.volume.targets import spdknvmf  # noqa"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"a8632b1e_d9d68ff9","line":120,"range":{"start_line":120,"start_character":35,"end_line":120,"end_character":39},"updated":"2020-12-07 15:12:34.000000000","message":"Probably list instead of dict.","commit_id":"8be906fa8bbdf1c7c4b049522179b544fdc03a12"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f055d70bf10ed350dc6cded435280e590b8cee22","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self._stats \u003d {}"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @classmethod"},{"line_number":120,"context_line":"    def get_driver_options(cls) -\u003e dict:"},{"line_number":121,"context_line":"        # Imports required to have config options"},{"line_number":122,"context_line":"        from cinder.volume.targets import spdknvmf  # noqa"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"4b647c60_63a7c2ed","line":120,"range":{"start_line":120,"start_character":35,"end_line":120,"end_character":39},"in_reply_to":"a8632b1e_d9d68ff9","updated":"2023-09-20 16:57:59.000000000","message":"Done","commit_id":"8be906fa8bbdf1c7c4b049522179b544fdc03a12"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e95965fb0f7e1403f51b031580250c128fe50f67","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from __future__ import annotations"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import math"},{"line_number":21,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":15,"id":"00d19cc2_81a0391c","line":18,"updated":"2024-12-05 23:16:11.000000000","message":"I don\u0027t think you need this (I don\u0027t see any postponed references, and the mypy job runs fine under py3.9+ without it), but it doesn\u0027t hurt, either.","commit_id":"168458325d72341b8e8f5f3d8cd78e70fdd6c542"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d2fcf05b555d7d62a93efd8ac66e80cae33e47c7","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from __future__ import annotations"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import math"},{"line_number":21,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":15,"id":"4392bd65_12fc6bb8","line":18,"in_reply_to":"00d19cc2_81a0391c","updated":"2026-03-19 12:53:17.000000000","message":"Done","commit_id":"168458325d72341b8e8f5f3d8cd78e70fdd6c542"}]}
