)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7e7dd6cf_2745e7b7","updated":"2022-05-09 14:21:24.000000000","message":"Few comments inline but LGTM. Thanks Eric.","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"4a43500395b8db9fa4b6c29ee9f6182b127a3f94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a14ef62a_9759311e","updated":"2022-05-10 18:07:28.000000000","message":"Thank you Eric for working on this. The typing looks good to me. I will approve the patch after Rajat\u0027s questions are answered.","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f3461a07fe17cb44dc003495754ab12c257bd7ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"79b2f415_736aeda3","updated":"2022-03-15 15:16:07.000000000","message":"recheck","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"389b329482a9bc997c76bdccad58f130db32acf1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f0310ac5_e965b3e0","updated":"2022-03-10 19:29:17.000000000","message":"recheck","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"007547ddb3043495f028acc77f6a951cdd9ac6b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f2f14d16_fbe03794","updated":"2022-03-10 15:18:59.000000000","message":"recheck","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"23a606c33fa6fe65b3262bd063c43ee6b01d20de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"70a650a6_947c9624","updated":"2022-05-12 14:12:49.000000000","message":"Comments have been addressed!","commit_id":"7b05eabac8a726b834e1e6e992bb1eff9486ca45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b9fb4f414c27d00aeecc0894df11662c7fdf2a2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d7918828_42dac7f9","updated":"2022-05-11 05:06:33.000000000","message":"recheck\n\nLGTM.\nunrelated tempest job failures\ntempest.exceptions.BuildErrorException: Server 7711ede7-8998-4804-9749-b9fb20a5e055 failed to build and is in ERROR status\nDetails: Fault: {\u0027code\u0027: 500, \u0027created\u0027: \u00272022-05-10T19:50:05Z\u0027, \u0027message\u0027: \u0027ReadOnlyImage\u0027}.\n","commit_id":"7b05eabac8a726b834e1e6e992bb1eff9486ca45"}],"cinder/mypy-files.txt":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"791cac98423d5fcec099470661b2f764d417eb08","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3fde4c5c_dac4d84f","updated":"2020-12-02 15:33:50.000000000","message":"Should have remotefs.py listed in here.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"}],"cinder/volume/drivers/remotefs.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":44,"context_line":"from cinder.volume import configuration"},{"line_number":45,"context_line":"from cinder.volume import driver"},{"line_number":46,"context_line":"from cinder.volume import volume_utils"},{"line_number":47,"context_line":"from os_brick.remotefs import remotefs as remotefs_brick"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d17bea77","line":47,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: I100 Import statements are in the wrong order. \u0027from os_brick.remotefs import remotefs\u0027 should be before \u0027from cinder.volume import volume_utils\u0027 and in a different group.","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":44,"context_line":"from cinder.volume import configuration"},{"line_number":45,"context_line":"from cinder.volume import driver"},{"line_number":46,"context_line":"from cinder.volume import volume_utils"},{"line_number":47,"context_line":"from os_brick.remotefs import remotefs as remotefs_brick"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_b17e3667","line":47,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: I201 Missing newline between import groups. \u0027from os_brick.remotefs import remotefs\u0027 is identified as Third Party and \u0027from cinder.volume import volume_utils\u0027 is identified as Application.","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    @utils.trace"},{"line_number":183,"context_line":"    def initialize_connection(self,"},{"line_number":184,"context_line":"                              volume: objects.Volume,"},{"line_number":185,"context_line":"                              connector:dict) -\u003e dict:"},{"line_number":186,"context_line":"        \"\"\"Allow connection to connector and return connection info."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_1199e2c2","line":185,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        return None"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @staticmethod"},{"line_number":255,"context_line":"    def _validate_state(current_state:str,"},{"line_number":256,"context_line":"                        acceptable_states:ty.Union[tuple, list],"},{"line_number":257,"context_line":"                        obj_description\u003d\u0027volume\u0027,"},{"line_number":258,"context_line":"                        invalid_exc\u003dexception.InvalidVolume) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_f1938ea1","line":255,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @staticmethod"},{"line_number":255,"context_line":"    def _validate_state(current_state:str,"},{"line_number":256,"context_line":"                        acceptable_states:ty.Union[tuple, list],"},{"line_number":257,"context_line":"                        obj_description\u003d\u0027volume\u0027,"},{"line_number":258,"context_line":"                        invalid_exc\u003dexception.InvalidVolume) -\u003e None:"},{"line_number":259,"context_line":"        if current_state not in acceptable_states:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_518fda73","line":256,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        return os.path.join(self._get_mount_point_for_share(remotefs_share),"},{"line_number":447,"context_line":"                            volume.name)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id) -\u003e None:"},{"line_number":450,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        image_utils.fetch_to_raw(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_318a2663","line":449,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E501 line too long (85 \u003e 79 characters)","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                reason\u003d(_(\"Expected volume size was %d\") % volume.size)"},{"line_number":477,"context_line":"                + (_(\" but size is now %d\") % virt_size))"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta) -\u003e None:"},{"line_number":480,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":481,"context_line":"        volume_utils.upload_volume(context,"},{"line_number":482,"context_line":"                                   image_service,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_91ea120c","line":479,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":704,"context_line":"    _always_use_temp_snap_when_cloning \u003d True"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":707,"context_line":"        self._remotefsclient:remotefs_brick.RemoteFsClient \u003d None"},{"line_number":708,"context_line":"        self.base:ty.Optional[str] \u003d None"},{"line_number":709,"context_line":"        self._nova:ty.Optional[db.base.Base] \u003d None"},{"line_number":710,"context_line":"        super(RemoteFSSnapDriverBase, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_71edbe23","line":707,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":705,"context_line":""},{"line_number":706,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":707,"context_line":"        self._remotefsclient:remotefs_brick.RemoteFsClient \u003d None"},{"line_number":708,"context_line":"        self.base:ty.Optional[str] \u003d None"},{"line_number":709,"context_line":"        self._nova:ty.Optional[db.base.Base] \u003d None"},{"line_number":710,"context_line":"        super(RemoteFSSnapDriverBase, self).__init__(*args, **kwargs)"},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_d1f00a00","line":708,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":707,"context_line":"        self._remotefsclient:remotefs_brick.RemoteFsClient \u003d None"},{"line_number":708,"context_line":"        self.base:ty.Optional[str] \u003d None"},{"line_number":709,"context_line":"        self._nova:ty.Optional[db.base.Base] \u003d None"},{"line_number":710,"context_line":"        super(RemoteFSSnapDriverBase, self).__init__(*args, **kwargs)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_b1f3d608","line":709,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E231 missing whitespace after \u0027:\u0027","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"de1bc25677968f7b66e8aa8f4d6ad0db7b2e9092","unresolved":false,"context_lines":[{"line_number":1016,"context_line":""},{"line_number":1017,"context_line":"        # Find the file which backs this file, which represents the point"},{"line_number":1018,"context_line":"        # in which this snapshot was created."},{"line_number":1019,"context_line":"        img_info \u003d self._qemu_img_info(forward_path)   # something is wrong here"},{"line_number":1020,"context_line":"        return img_info.backing_file"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    def _snapshots_exist(self, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_11de026c","line":1019,"updated":"2020-06-04 18:36:31.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"95727715f142fa5eead7e4e0d4e068b134880a8c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":122,"context_line":"       May be applied to methods that take a \u0027volume\u0027 or \u0027snapshot\u0027 argument."},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def lvo_inner1(inst, *args, **kwargs):"},{"line_number":126,"context_line":"        lock_tag \u003d inst.driver_prefix"},{"line_number":127,"context_line":"        call_args \u003d inspect.getcallargs(f, inst, *args, **kwargs)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d7065fe2_4550e224","line":125,"updated":"2020-11-23 20:33:29.000000000","message":"Does inner functions require type annotations as well?\nMy opinion is that it would be overkill, though.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"791cac98423d5fcec099470661b2f764d417eb08","unresolved":true,"context_lines":[{"line_number":122,"context_line":"       May be applied to methods that take a \u0027volume\u0027 or \u0027snapshot\u0027 argument."},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def lvo_inner1(inst, *args, **kwargs):"},{"line_number":126,"context_line":"        lock_tag \u003d inst.driver_prefix"},{"line_number":127,"context_line":"        call_args \u003d inspect.getcallargs(f, inst, *args, **kwargs)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"391e153d_28fa107c","line":125,"in_reply_to":"d7065fe2_4550e224","updated":"2020-12-02 15:33:50.000000000","message":"It\u0027s really just about effort vs. payoff -- getting to 100% coverage would be ideal, but I\u0027m aiming at the higher-impact areas while getting started with this work, and not trying to get all of it in one patch.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":156,"context_line":"class RemoteFSDriver(driver.BaseVD):"},{"line_number":157,"context_line":"    \"\"\"Common base for drivers that work like NFS.\"\"\""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    driver_volume_type \u003d None"},{"line_number":160,"context_line":"    driver_prefix \u003d \u0027remotefs\u0027"},{"line_number":161,"context_line":"    volume_backend_name \u003d None"},{"line_number":162,"context_line":"    vendor_name \u003d \u0027Open Source\u0027"},{"line_number":163,"context_line":"    SHARE_FORMAT_REGEX \u003d r\u0027.+:/.+\u0027"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    # We let the drivers inheriting this specify"},{"line_number":166,"context_line":"    # whether thin provisioning is supported or not."},{"line_number":167,"context_line":"    _thin_provisioning_support \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"4eec1270_0c4faf41","line":164,"range":{"start_line":159,"start_character":0,"end_line":164,"end_character":0},"updated":"2020-11-23 20:33:29.000000000","message":"driver_volume_type: ty.Optional[str]\ndriver_prefix: str\nvolume_backend_name: ty.Optional[str]\nvendor_name: str\nSHARE_FORMAT_REGEX: str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"791cac98423d5fcec099470661b2f764d417eb08","unresolved":true,"context_lines":[{"line_number":156,"context_line":"class RemoteFSDriver(driver.BaseVD):"},{"line_number":157,"context_line":"    \"\"\"Common base for drivers that work like NFS.\"\"\""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    driver_volume_type \u003d None"},{"line_number":160,"context_line":"    driver_prefix \u003d \u0027remotefs\u0027"},{"line_number":161,"context_line":"    volume_backend_name \u003d None"},{"line_number":162,"context_line":"    vendor_name \u003d \u0027Open Source\u0027"},{"line_number":163,"context_line":"    SHARE_FORMAT_REGEX \u003d r\u0027.+:/.+\u0027"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    # We let the drivers inheriting this specify"},{"line_number":166,"context_line":"    # whether thin provisioning is supported or not."},{"line_number":167,"context_line":"    _thin_provisioning_support \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"ee46b135_de09725f","line":164,"range":{"start_line":159,"start_character":0,"end_line":164,"end_character":0},"in_reply_to":"4eec1270_0c4faf41","updated":"2020-12-02 15:33:50.000000000","message":"driver_prefix: str is not necessary, as mypy will auto-detect that it is a str type here.\n\nSame with the others.  Running \"tox -e mypy\" and observing mypy-report/index.html will show these as green.  (If remotefs.py is in mypy-files.txt, which unfortunately it isn\u0027t.)","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    # We let the drivers inheriting this specify"},{"line_number":166,"context_line":"    # whether thin provisioning is supported or not."},{"line_number":167,"context_line":"    _thin_provisioning_support \u003d False"},{"line_number":168,"context_line":"    _thick_provisioning_support \u003d False"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":171,"context_line":"        super(RemoteFSDriver, self).__init__(*args, **kwargs)"},{"line_number":172,"context_line":"        self.shares \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"952520a3_1692c82a","line":169,"range":{"start_line":167,"start_character":0,"end_line":169,"end_character":0},"updated":"2020-11-23 20:33:29.000000000","message":"_thin_provisioning_support: bool\n_thick_provisioning_support: bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":167,"context_line":"    _thin_provisioning_support \u003d False"},{"line_number":168,"context_line":"    _thick_provisioning_support \u003d False"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":171,"context_line":"        super(RemoteFSDriver, self).__init__(*args, **kwargs)"},{"line_number":172,"context_line":"        self.shares \u003d {}"},{"line_number":173,"context_line":"        self._mounted_shares \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"1faf4ee5_0d35b8ae","line":170,"range":{"start_line":170,"start_character":38,"end_line":170,"end_character":40},"updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":171,"context_line":"        super(RemoteFSDriver, self).__init__(*args, **kwargs)"},{"line_number":172,"context_line":"        self.shares \u003d {}"},{"line_number":173,"context_line":"        self._mounted_shares \u003d []"},{"line_number":174,"context_line":"        self._execute_as_root \u003d True"},{"line_number":175,"context_line":"        self._is_voldb_empty_at_startup \u003d kwargs.pop(\u0027is_vol_db_empty\u0027, None)"},{"line_number":176,"context_line":"        self._supports_encryption \u003d False"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        if self.configuration:"},{"line_number":179,"context_line":"            self.configuration.append_config_values(nas_opts)"},{"line_number":180,"context_line":"            self.configuration.append_config_values(volume_opts)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5152a1ed_757d9af1","line":177,"range":{"start_line":172,"start_character":0,"end_line":177,"end_character":0},"updated":"2020-11-23 20:33:29.000000000","message":"self.shares: dict\nself._mounted_shares: List[str]\nself._execute_as_root: bool\nself._is_voldb_empty_at_startup: ty.Optional(bool)\nself._supports_encryption: bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":202,"context_line":"            \u0027mount_point_base\u0027: self._get_mount_point_base()"},{"line_number":203,"context_line":"        }"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def do_setup(self, context) -\u003e None:"},{"line_number":206,"context_line":"        \"\"\"Any initialization the volume driver does while starting.\"\"\""},{"line_number":207,"context_line":"        super(RemoteFSDriver, self).do_setup(context)"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"768e2d16_17d9444b","line":205,"range":{"start_line":205,"start_character":23,"end_line":205,"end_character":30},"updated":"2020-11-23 20:33:29.000000000","message":"context: context.RequestContext","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            \u0027mount_point_base\u0027: self._get_mount_point_base()"},{"line_number":203,"context_line":"        }"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def do_setup(self, context) -\u003e None:"},{"line_number":206,"context_line":"        \"\"\"Any initialization the volume driver does while starting.\"\"\""},{"line_number":207,"context_line":"        super(RemoteFSDriver, self).do_setup(context)"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"42cf4c1e_d102434f","line":205,"range":{"start_line":205,"start_character":23,"end_line":205,"end_character":30},"in_reply_to":"768e2d16_17d9444b","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":258,"context_line":"    @staticmethod"},{"line_number":259,"context_line":"    def _validate_state(current_state: str,"},{"line_number":260,"context_line":"                        acceptable_states: ty.Union[tuple, list],"},{"line_number":261,"context_line":"                        obj_description\u003d\u0027volume\u0027,"},{"line_number":262,"context_line":"                        invalid_exc\u003dexception.InvalidVolume) -\u003e None:"},{"line_number":263,"context_line":"        if current_state not in acceptable_states:"},{"line_number":264,"context_line":"            message \u003d _(\u0027Invalid %(obj_description)s state. \u0027"},{"line_number":265,"context_line":"                        \u0027Acceptable states for this operation: \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9feb7d4a_a538bf11","line":262,"range":{"start_line":261,"start_character":24,"end_line":262,"end_character":59},"updated":"2020-11-23 20:33:29.000000000","message":"Should we annotate optional arguments as well?","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    @staticmethod"},{"line_number":259,"context_line":"    def _validate_state(current_state: str,"},{"line_number":260,"context_line":"                        acceptable_states: ty.Union[tuple, list],"},{"line_number":261,"context_line":"                        obj_description\u003d\u0027volume\u0027,"},{"line_number":262,"context_line":"                        invalid_exc\u003dexception.InvalidVolume) -\u003e None:"},{"line_number":263,"context_line":"        if current_state not in acceptable_states:"},{"line_number":264,"context_line":"            message \u003d _(\u0027Invalid %(obj_description)s state. \u0027"},{"line_number":265,"context_line":"                        \u0027Acceptable states for this operation: \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"a8f24965_f377aa5b","line":262,"range":{"start_line":261,"start_character":24,"end_line":262,"end_character":59},"in_reply_to":"9feb7d4a_a538bf11","updated":"2020-12-02 16:51:56.000000000","message":"obj_description is already auto-determined to be a str here.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"6e8eff027a3accc7ce7695aaed07cc19205c4b86","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        return {\u0027provider_location\u0027: volume.provider_location}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _do_create_volume(self, volume) -\u003e None:"},{"line_number":299,"context_line":"        \"\"\"Create a volume on given remote share."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"fffc6b78_47e37b34","line":298,"updated":"2020-11-20 07:42:40.000000000","message":"volume: objects.Volume ?","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        return {\u0027provider_location\u0027: volume.provider_location}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _do_create_volume(self, volume) -\u003e None:"},{"line_number":299,"context_line":"        \"\"\"Create a volume on given remote share."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"91d0bd20_9400b7eb","line":298,"in_reply_to":"29dc4447_b924a43a","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        return {\u0027provider_location\u0027: volume.provider_location}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _do_create_volume(self, volume) -\u003e None:"},{"line_number":299,"context_line":"        \"\"\"Create a volume on given remote share."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"29dc4447_b924a43a","line":298,"in_reply_to":"fffc6b78_47e37b34","updated":"2020-11-23 20:33:29.000000000","message":"+1 to annotate `volume: objects.Volume`","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"6e8eff027a3accc7ce7695aaed07cc19205c4b86","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        LOG.debug(\u0027Available shares %s\u0027, self._mounted_shares)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    @utils.trace"},{"line_number":351,"context_line":"    def delete_volume(self, volume) -\u003e None:"},{"line_number":352,"context_line":"        \"\"\"Deletes a logical volume."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"fffc6b78_87d6034f","line":351,"updated":"2020-11-20 07:42:40.000000000","message":"same as line 298 ?","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        self._delete(mounted_path)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def ensure_export(self, ctx, volume) -\u003e None:"},{"line_number":372,"context_line":"        \"\"\"Synchronously recreates an export for a logical volume.\"\"\""},{"line_number":373,"context_line":"        self._ensure_share_mounted(volume.provider_location)"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7624a9d7_6eae4243","line":371,"range":{"start_line":371,"start_character":28,"end_line":371,"end_character":39},"updated":"2020-11-23 20:33:29.000000000","message":"ctx: context.RequestContext\nvolume: objects.Volume","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        self._delete(mounted_path)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def ensure_export(self, ctx, volume) -\u003e None:"},{"line_number":372,"context_line":"        \"\"\"Synchronously recreates an export for a logical volume.\"\"\""},{"line_number":373,"context_line":"        self._ensure_share_mounted(volume.provider_location)"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"8143e746_586f013b","line":371,"range":{"start_line":371,"start_character":28,"end_line":371,"end_character":39},"in_reply_to":"7624a9d7_6eae4243","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":372,"context_line":"        \"\"\"Synchronously recreates an export for a logical volume.\"\"\""},{"line_number":373,"context_line":"        self._ensure_share_mounted(volume.provider_location)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def create_export(self, ctx, volume, connector) -\u003e None:"},{"line_number":376,"context_line":"        \"\"\"Exports the volume."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        Can optionally return a dictionary of changes"}],"source_content_type":"text/x-python","patch_set":8,"id":"0b606014_089f40ae","line":375,"range":{"start_line":375,"start_character":28,"end_line":375,"end_character":50},"updated":"2020-11-23 20:33:29.000000000","message":"ctx: context.RequestContext\nvolume: objects.Volume\nconnector: dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        \"\"\"Synchronously recreates an export for a logical volume.\"\"\""},{"line_number":373,"context_line":"        self._ensure_share_mounted(volume.provider_location)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def create_export(self, ctx, volume, connector) -\u003e None:"},{"line_number":376,"context_line":"        \"\"\"Exports the volume."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        Can optionally return a dictionary of changes"}],"source_content_type":"text/x-python","patch_set":8,"id":"4e024e98_36a8fda6","line":375,"range":{"start_line":375,"start_character":28,"end_line":375,"end_character":50},"in_reply_to":"0b606014_089f40ae","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":380,"context_line":"        \"\"\""},{"line_number":381,"context_line":"        pass"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def remove_export(self, ctx, volume) -\u003e None:"},{"line_number":384,"context_line":"        \"\"\"Removes an export for a logical volume.\"\"\""},{"line_number":385,"context_line":"        pass"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"78e0ee37_7af87347","line":383,"range":{"start_line":383,"start_character":28,"end_line":383,"end_character":39},"updated":"2020-11-23 20:33:29.000000000","message":"ctx: context.RequestContext\nvolume: objects.Volume","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        \"\"\""},{"line_number":381,"context_line":"        pass"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def remove_export(self, ctx, volume) -\u003e None:"},{"line_number":384,"context_line":"        \"\"\"Removes an export for a logical volume.\"\"\""},{"line_number":385,"context_line":"        pass"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"855cb77a_763dff9d","line":383,"range":{"start_line":383,"start_character":28,"end_line":383,"end_character":39},"in_reply_to":"78e0ee37_7af87347","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":384,"context_line":"        \"\"\"Removes an export for a logical volume.\"\"\""},{"line_number":385,"context_line":"        pass"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def delete_snapshot(self, snapshot) -\u003e None:"},{"line_number":388,"context_line":"        \"\"\"Delete snapshot."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        Do nothing for this driver, but allow manager to handle deletion"}],"source_content_type":"text/x-python","patch_set":8,"id":"e15e2b7e_457c72b1","line":387,"range":{"start_line":387,"start_character":30,"end_line":387,"end_character":38},"updated":"2020-11-23 20:33:29.000000000","message":"snapshot: objects.Snapshot","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        \"\"\"Removes an export for a logical volume.\"\"\""},{"line_number":385,"context_line":"        pass"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def delete_snapshot(self, snapshot) -\u003e None:"},{"line_number":388,"context_line":"        \"\"\"Delete snapshot."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        Do nothing for this driver, but allow manager to handle deletion"}],"source_content_type":"text/x-python","patch_set":8,"id":"cae3aaeb_eb0fa983","line":387,"range":{"start_line":387,"start_character":30,"end_line":387,"end_character":38},"in_reply_to":"e15e2b7e_457c72b1","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":392,"context_line":"        \"\"\""},{"line_number":393,"context_line":"        pass"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def _delete(self, path) -\u003e None:"},{"line_number":396,"context_line":"        # Note(lpetrut): this method is needed in order to provide"},{"line_number":397,"context_line":"        # interoperability with Windows as it will be overridden."},{"line_number":398,"context_line":"        self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"421937f1_bad8a869","line":395,"range":{"start_line":395,"start_character":22,"end_line":395,"end_character":26},"updated":"2020-11-23 20:33:29.000000000","message":"path: str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        \"\"\""},{"line_number":393,"context_line":"        pass"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def _delete(self, path) -\u003e None:"},{"line_number":396,"context_line":"        # Note(lpetrut): this method is needed in order to provide"},{"line_number":397,"context_line":"        # interoperability with Windows as it will be overridden."},{"line_number":398,"context_line":"        self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"245364c8_cca155a8","line":395,"range":{"start_line":395,"start_character":22,"end_line":395,"end_character":26},"in_reply_to":"421937f1_bad8a869","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":397,"context_line":"        # interoperability with Windows as it will be overridden."},{"line_number":398,"context_line":"        self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dself._execute_as_root)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def _create_sparsed_file(self, path, size) -\u003e None:"},{"line_number":401,"context_line":"        \"\"\"Creates a sparse file of a given size in GiB.\"\"\""},{"line_number":402,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size,"},{"line_number":403,"context_line":"                      path, run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c9753bf6_80917201","line":400,"range":{"start_line":400,"start_character":35,"end_line":400,"end_character":45},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nsize: int","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        # interoperability with Windows as it will be overridden."},{"line_number":398,"context_line":"        self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dself._execute_as_root)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def _create_sparsed_file(self, path, size) -\u003e None:"},{"line_number":401,"context_line":"        \"\"\"Creates a sparse file of a given size in GiB.\"\"\""},{"line_number":402,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size,"},{"line_number":403,"context_line":"                      path, run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"465dd219_6836b54a","line":400,"range":{"start_line":400,"start_character":35,"end_line":400,"end_character":45},"in_reply_to":"c9753bf6_80917201","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":402,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size,"},{"line_number":403,"context_line":"                      path, run_as_root\u003dself._execute_as_root)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def _create_regular_file(self, path, size) -\u003e None:"},{"line_number":406,"context_line":"        \"\"\"Creates a regular file of given size in GiB.\"\"\""},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        block_size_mb \u003d 1"}],"source_content_type":"text/x-python","patch_set":8,"id":"b6ce95fd_246f1d41","line":405,"range":{"start_line":405,"start_character":35,"end_line":405,"end_character":45},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nsize: int","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size,"},{"line_number":403,"context_line":"                      path, run_as_root\u003dself._execute_as_root)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def _create_regular_file(self, path, size) -\u003e None:"},{"line_number":406,"context_line":"        \"\"\"Creates a regular file of given size in GiB.\"\"\""},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        block_size_mb \u003d 1"}],"source_content_type":"text/x-python","patch_set":8,"id":"ee1c2f0d_279c819d","line":405,"range":{"start_line":405,"start_character":35,"end_line":405,"end_character":45},"in_reply_to":"b6ce95fd_246f1d41","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":413,"context_line":"                      \u0027count\u003d%d\u0027 % block_count,"},{"line_number":414,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def _create_qcow2_file(self, path, size_gb) -\u003e None:"},{"line_number":417,"context_line":"        \"\"\"Creates a QCOW2 file of a given size in GiB.\"\"\""},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        self._execute(\u0027qemu-img\u0027, \u0027create\u0027, \u0027-f\u0027, \u0027qcow2\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"f825f175_f4181cd0","line":416,"range":{"start_line":416,"start_character":33,"end_line":416,"end_character":46},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nsize: int","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                      \u0027count\u003d%d\u0027 % block_count,"},{"line_number":414,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def _create_qcow2_file(self, path, size_gb) -\u003e None:"},{"line_number":417,"context_line":"        \"\"\"Creates a QCOW2 file of a given size in GiB.\"\"\""},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        self._execute(\u0027qemu-img\u0027, \u0027create\u0027, \u0027-f\u0027, \u0027qcow2\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"2060e9db_59ea1f5e","line":416,"range":{"start_line":416,"start_character":33,"end_line":416,"end_character":46},"in_reply_to":"f825f175_f4181cd0","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":422,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def _create_encrypted_volume_file(self,"},{"line_number":425,"context_line":"                                      path,"},{"line_number":426,"context_line":"                                      size_gb,"},{"line_number":427,"context_line":"                                      encryption,"},{"line_number":428,"context_line":"                                      context):"},{"line_number":429,"context_line":"        \"\"\"Create an encrypted volume."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        This works by creating an encrypted image locally,"}],"source_content_type":"text/x-python","patch_set":8,"id":"acbe2be2_c0b88332","line":428,"range":{"start_line":425,"start_character":38,"end_line":428,"end_character":47},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nsize_gb: int\nencryption: dict\ncontect: context.RequestContext\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def _create_encrypted_volume_file(self,"},{"line_number":425,"context_line":"                                      path,"},{"line_number":426,"context_line":"                                      size_gb,"},{"line_number":427,"context_line":"                                      encryption,"},{"line_number":428,"context_line":"                                      context):"},{"line_number":429,"context_line":"        \"\"\"Create an encrypted volume."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        This works by creating an encrypted image locally,"}],"source_content_type":"text/x-python","patch_set":8,"id":"e2d66545_67cbbff5","line":428,"range":{"start_line":425,"start_character":38,"end_line":428,"end_character":47},"in_reply_to":"acbe2be2_c0b88332","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":462,"context_line":"                path, str(size_gb * units.Gi),"},{"line_number":463,"context_line":"                run_as_root\u003dself._execute_as_root)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def _set_rw_permissions(self, path) -\u003e None:"},{"line_number":466,"context_line":"        \"\"\"Sets access permissions for given NFS path."},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        Volume file permissions are set based upon the value of"}],"source_content_type":"text/x-python","patch_set":8,"id":"2b1f3b21_1e755a52","line":465,"range":{"start_line":465,"start_character":34,"end_line":465,"end_character":38},"updated":"2020-11-23 20:33:29.000000000","message":"path: str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                path, str(size_gb * units.Gi),"},{"line_number":463,"context_line":"                run_as_root\u003dself._execute_as_root)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def _set_rw_permissions(self, path) -\u003e None:"},{"line_number":466,"context_line":"        \"\"\"Sets access permissions for given NFS path."},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        Volume file permissions are set based upon the value of"}],"source_content_type":"text/x-python","patch_set":8,"id":"ac86ef98_c3e4e79e","line":465,"range":{"start_line":465,"start_character":34,"end_line":465,"end_character":38},"in_reply_to":"2b1f3b21_1e755a52","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":484,"context_line":"        self._execute(\u0027chmod\u0027, permissions, path,"},{"line_number":485,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def _set_rw_permissions_for_all(self, path) -\u003e None:"},{"line_number":488,"context_line":"        \"\"\"Sets 666 permissions for the path.\"\"\""},{"line_number":489,"context_line":"        self._execute(\u0027chmod\u0027, \u0027ugo+rw\u0027, path,"},{"line_number":490,"context_line":"                      run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"b6638768_d1df00e7","line":487,"range":{"start_line":487,"start_character":42,"end_line":487,"end_character":46},"updated":"2020-11-23 20:33:29.000000000","message":"path: str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        self._execute(\u0027chmod\u0027, permissions, path,"},{"line_number":485,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def _set_rw_permissions_for_all(self, path) -\u003e None:"},{"line_number":488,"context_line":"        \"\"\"Sets 666 permissions for the path.\"\"\""},{"line_number":489,"context_line":"        self._execute(\u0027chmod\u0027, \u0027ugo+rw\u0027, path,"},{"line_number":490,"context_line":"                      run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"af147e28_d2bef6c4","line":487,"range":{"start_line":487,"start_character":42,"end_line":487,"end_character":46},"in_reply_to":"b6638768_d1df00e7","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":489,"context_line":"        self._execute(\u0027chmod\u0027, \u0027ugo+rw\u0027, path,"},{"line_number":490,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    def _set_rw_permissions_for_owner(self, path) -\u003e None:"},{"line_number":493,"context_line":"        \"\"\"Sets read-write permissions to the owner for the path.\"\"\""},{"line_number":494,"context_line":"        self._execute(\u0027chmod\u0027, \u0027u+rw\u0027, path,"},{"line_number":495,"context_line":"                      run_as_root\u003dself._execute_as_root)"}],"source_content_type":"text/x-python","patch_set":8,"id":"88a14c4c_7a7ed180","line":492,"range":{"start_line":492,"start_character":44,"end_line":492,"end_character":48},"updated":"2020-11-23 20:33:29.000000000","message":"path: str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":494,"context_line":"        self._execute(\u0027chmod\u0027, \u0027u+rw\u0027, path,"},{"line_number":495,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def local_path(self, volume) -\u003e str:"},{"line_number":498,"context_line":"        \"\"\"Get volume path (mounted locally fs path) for given volume."},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"53828512_0ebd0cbc","line":497,"range":{"start_line":497,"start_character":25,"end_line":497,"end_character":31},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        self._execute(\u0027chmod\u0027, \u0027u+rw\u0027, path,"},{"line_number":495,"context_line":"                      run_as_root\u003dself._execute_as_root)"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def local_path(self, volume) -\u003e str:"},{"line_number":498,"context_line":"        \"\"\"Get volume path (mounted locally fs path) for given volume."},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        :param volume: volume reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"10cca833_2142edfe","line":497,"range":{"start_line":497,"start_character":25,"end_line":497,"end_character":31},"in_reply_to":"53828512_0ebd0cbc","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":504,"context_line":"                            volume.name)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def copy_image_to_volume(self,"},{"line_number":507,"context_line":"                             context, volume, image_service, image_id) -\u003e None:"},{"line_number":508,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        image_utils.fetch_to_raw(context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba762d12_541d4123","line":507,"range":{"start_line":507,"start_character":29,"end_line":507,"end_character":69},"updated":"2020-11-23 20:33:29.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nimage_service: glance.GlanceImageService\nimage_id: str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":504,"context_line":"                            volume.name)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def copy_image_to_volume(self,"},{"line_number":507,"context_line":"                             context, volume, image_service, image_id) -\u003e None:"},{"line_number":508,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        image_utils.fetch_to_raw(context,"}],"source_content_type":"text/x-python","patch_set":8,"id":"77bf407d_9c80e0e9","line":507,"range":{"start_line":507,"start_character":29,"end_line":507,"end_character":69},"in_reply_to":"ba762d12_541d4123","updated":"2020-12-02 16:51:56.000000000","message":"Seems weird that we have a direct dependency on GlanceImageService and not something more generic here?","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":535,"context_line":"                + (_(\" but size is now %d\") % virt_size))"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def copy_volume_to_image(self,"},{"line_number":538,"context_line":"                             context,"},{"line_number":539,"context_line":"                             volume,"},{"line_number":540,"context_line":"                             image_service,"},{"line_number":541,"context_line":"                             image_meta) -\u003e None:"},{"line_number":542,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":543,"context_line":"        volume_utils.upload_volume(context,"},{"line_number":544,"context_line":"                                   image_service,"}],"source_content_type":"text/x-python","patch_set":8,"id":"b0888df8_c000076e","line":541,"range":{"start_line":538,"start_character":29,"end_line":541,"end_character":39},"updated":"2020-11-23 20:33:29.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nimage_service: glance.GlanceImageService\nimage_meta: dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                + (_(\" but size is now %d\") % virt_size))"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def copy_volume_to_image(self,"},{"line_number":538,"context_line":"                             context,"},{"line_number":539,"context_line":"                             volume,"},{"line_number":540,"context_line":"                             image_service,"},{"line_number":541,"context_line":"                             image_meta) -\u003e None:"},{"line_number":542,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":543,"context_line":"        volume_utils.upload_volume(context,"},{"line_number":544,"context_line":"                                   image_service,"}],"source_content_type":"text/x-python","patch_set":8,"id":"44eac31e_b58a37f2","line":541,"range":{"start_line":538,"start_character":29,"end_line":541,"end_character":39},"in_reply_to":"b0888df8_c000076e","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":547,"context_line":"                                   volume,"},{"line_number":548,"context_line":"                                   run_as_root\u003dself._execute_as_root)"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    def _read_config_file(self, config_file):"},{"line_number":551,"context_line":"        # Returns list of lines in file"},{"line_number":552,"context_line":"        with open(config_file) as f:"},{"line_number":553,"context_line":"            return f.readlines()"}],"source_content_type":"text/x-python","patch_set":8,"id":"a1ea07da_4ed1f8ae","line":550,"range":{"start_line":550,"start_character":32,"end_line":550,"end_character":45},"updated":"2020-11-23 20:33:29.000000000","message":"config_file: str\nreturn -\u003e ty.List[str]","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":547,"context_line":"                                   volume,"},{"line_number":548,"context_line":"                                   run_as_root\u003dself._execute_as_root)"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    def _read_config_file(self, config_file):"},{"line_number":551,"context_line":"        # Returns list of lines in file"},{"line_number":552,"context_line":"        with open(config_file) as f:"},{"line_number":553,"context_line":"            return f.readlines()"}],"source_content_type":"text/x-python","patch_set":8,"id":"20078e8a_aa3835e9","line":550,"range":{"start_line":550,"start_character":32,"end_line":550,"end_character":45},"in_reply_to":"a1ea07da_4ed1f8ae","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":552,"context_line":"        with open(config_file) as f:"},{"line_number":553,"context_line":"            return f.readlines()"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def _load_shares_config(self, share_file\u003dNone):"},{"line_number":556,"context_line":"        self.shares \u003d {}"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        if all((self.configuration.nas_host,"}],"source_content_type":"text/x-python","patch_set":8,"id":"e58e63fc_7a3b50b7","line":555,"range":{"start_line":555,"start_character":34,"end_line":555,"end_character":51},"updated":"2020-11-23 20:33:29.000000000","message":"share_file: ty.Optional[str]\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        with open(config_file) as f:"},{"line_number":553,"context_line":"            return f.readlines()"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def _load_shares_config(self, share_file\u003dNone):"},{"line_number":556,"context_line":"        self.shares \u003d {}"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        if all((self.configuration.nas_host,"}],"source_content_type":"text/x-python","patch_set":8,"id":"79c74ecf_c532c625","line":555,"range":{"start_line":555,"start_character":34,"end_line":555,"end_character":51},"in_reply_to":"e58e63fc_7a3b50b7","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        LOG.debug(\"shares loaded: %s\", self.shares)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def _get_mount_point_for_share(self, path):"},{"line_number":612,"context_line":"        raise NotImplementedError()"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"d9d0e6ce_18bb50ce","line":611,"range":{"start_line":611,"start_character":41,"end_line":611,"end_character":47},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        LOG.debug(\"shares loaded: %s\", self.shares)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def _get_mount_point_for_share(self, path):"},{"line_number":612,"context_line":"        raise NotImplementedError()"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"16a5d8ee_1a7c157a","line":611,"range":{"start_line":611,"start_character":41,"end_line":611,"end_character":47},"in_reply_to":"d834f828_a318ebb1","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        LOG.debug(\"shares loaded: %s\", self.shares)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def _get_mount_point_for_share(self, path):"},{"line_number":612,"context_line":"        raise NotImplementedError()"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"d834f828_a318ebb1","line":611,"range":{"start_line":611,"start_character":41,"end_line":611,"end_character":47},"in_reply_to":"d9d0e6ce_18bb50ce","updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e NoReturn\n\nbecause raises an exception instead of returning","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":611,"context_line":"    def _get_mount_point_for_share(self, path):"},{"line_number":612,"context_line":"        raise NotImplementedError()"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":615,"context_line":"        \"\"\"Disallow connection from connector.\"\"\""},{"line_number":616,"context_line":"        pass"},{"line_number":617,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"6cb383bd_d8013242","line":614,"range":{"start_line":614,"start_character":35,"end_line":614,"end_character":64},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume\nconnector: dict\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":611,"context_line":"    def _get_mount_point_for_share(self, path):"},{"line_number":612,"context_line":"        raise NotImplementedError()"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":615,"context_line":"        \"\"\"Disallow connection from connector.\"\"\""},{"line_number":616,"context_line":"        pass"},{"line_number":617,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ec88f892_1b1f39b6","line":614,"range":{"start_line":614,"start_character":35,"end_line":614,"end_character":64},"in_reply_to":"6cb383bd_d8013242","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":615,"context_line":"        \"\"\"Disallow connection from connector.\"\"\""},{"line_number":616,"context_line":"        pass"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _update_volume_stats(self):"},{"line_number":619,"context_line":"        \"\"\"Retrieve stats info from volume group.\"\"\""},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"56e03b23_afde4e77","line":618,"range":{"start_line":618,"start_character":34,"end_line":618,"end_character":35},"updated":"2020-11-23 20:33:29.000000000","message":"return -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        \"\"\"Disallow connection from connector.\"\"\""},{"line_number":616,"context_line":"        pass"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _update_volume_stats(self):"},{"line_number":619,"context_line":"        \"\"\"Retrieve stats info from volume group.\"\"\""},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"aaa3cccd_39bd7d82","line":618,"range":{"start_line":618,"start_character":34,"end_line":618,"end_character":35},"in_reply_to":"56e03b23_afde4e77","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":640,"context_line":"        data[\u0027QoS_support\u0027] \u003d False"},{"line_number":641,"context_line":"        self._stats \u003d data"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    def _get_capacity_info(self, share):"},{"line_number":644,"context_line":"        raise NotImplementedError()"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _find_share(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"056f6607_f5038c96","line":643,"range":{"start_line":643,"start_character":33,"end_line":643,"end_character":40},"updated":"2020-11-23 20:33:29.000000000","message":"share: str\nreturn -\u003e ty.Tuple[float, float, float]","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":640,"context_line":"        data[\u0027QoS_support\u0027] \u003d False"},{"line_number":641,"context_line":"        self._stats \u003d data"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    def _get_capacity_info(self, share):"},{"line_number":644,"context_line":"        raise NotImplementedError()"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _find_share(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"b490b7e5_462d0502","line":643,"range":{"start_line":643,"start_character":33,"end_line":643,"end_character":40},"in_reply_to":"056f6607_f5038c96","updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e NoReturn\n\nThe subclasses should override with return -\u003e ty.Tuple[float, float, float].","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":640,"context_line":"        data[\u0027QoS_support\u0027] \u003d False"},{"line_number":641,"context_line":"        self._stats \u003d data"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    def _get_capacity_info(self, share):"},{"line_number":644,"context_line":"        raise NotImplementedError()"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _find_share(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"60d5fa13_41e8b67a","line":643,"range":{"start_line":643,"start_character":33,"end_line":643,"end_character":40},"in_reply_to":"b490b7e5_462d0502","updated":"2020-12-02 16:51:56.000000000","message":"This one is kind of messy -- I suggest sorting it out in a later follow-up patch.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":643,"context_line":"    def _get_capacity_info(self, share):"},{"line_number":644,"context_line":"        raise NotImplementedError()"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _find_share(self, volume):"},{"line_number":647,"context_line":"        raise NotImplementedError()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bda2338a_ea0c94d8","line":646,"range":{"start_line":646,"start_character":26,"end_line":646,"end_character":34},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def _get_capacity_info(self, share):"},{"line_number":644,"context_line":"        raise NotImplementedError()"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _find_share(self, volume):"},{"line_number":647,"context_line":"        raise NotImplementedError()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"}],"source_content_type":"text/x-python","patch_set":8,"id":"68cd30ae_b43eafd6","line":646,"range":{"start_line":646,"start_character":26,"end_line":646,"end_character":34},"in_reply_to":"a1d4331f_dc665217","updated":"2020-12-02 16:51:56.000000000","message":"This one is kind of messy -- I suggest sorting it out in a later follow-up patch.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":643,"context_line":"    def _get_capacity_info(self, share):"},{"line_number":644,"context_line":"        raise NotImplementedError()"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _find_share(self, volume):"},{"line_number":647,"context_line":"        raise NotImplementedError()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"}],"source_content_type":"text/x-python","patch_set":8,"id":"a1d4331f_dc665217","line":646,"range":{"start_line":646,"start_character":26,"end_line":646,"end_character":34},"in_reply_to":"bda2338a_ea0c94d8","updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":646,"context_line":"    def _find_share(self, volume):"},{"line_number":647,"context_line":"        raise NotImplementedError()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":650,"context_line":"        raise NotImplementedError()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def secure_file_operations_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"6ce2c489_925a6f41","line":649,"range":{"start_line":649,"start_character":36,"end_line":649,"end_character":43},"updated":"2020-11-23 20:33:29.000000000","message":"share: str\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":646,"context_line":"    def _find_share(self, volume):"},{"line_number":647,"context_line":"        raise NotImplementedError()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":650,"context_line":"        raise NotImplementedError()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def secure_file_operations_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ad4d9e1f_987a72dd","line":649,"range":{"start_line":649,"start_character":36,"end_line":649,"end_character":43},"in_reply_to":"6ce2c489_925a6f41","updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":646,"context_line":"    def _find_share(self, volume):"},{"line_number":647,"context_line":"        raise NotImplementedError()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":650,"context_line":"        raise NotImplementedError()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def secure_file_operations_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff7e9f2a_2afa9986","line":649,"range":{"start_line":649,"start_character":36,"end_line":649,"end_character":43},"in_reply_to":"ad4d9e1f_987a72dd","updated":"2020-12-02 16:51:56.000000000","message":"This one is kind of messy -- I suggest sorting it out in a later follow-up patch.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":650,"context_line":"        raise NotImplementedError()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def secure_file_operations_enabled(self):"},{"line_number":653,"context_line":"        \"\"\"Determine if driver is operating in Secure File Operations mode."},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        The Cinder Volume driver needs to query if this driver is operating"}],"source_content_type":"text/x-python","patch_set":8,"id":"69e372b6_a6cc1c11","line":652,"range":{"start_line":652,"start_character":43,"end_line":652,"end_character":45},"updated":"2020-11-23 20:33:29.000000000","message":"return -\u003e bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":649,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":650,"context_line":"        raise NotImplementedError()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def secure_file_operations_enabled(self):"},{"line_number":653,"context_line":"        \"\"\"Determine if driver is operating in Secure File Operations mode."},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        The Cinder Volume driver needs to query if this driver is operating"}],"source_content_type":"text/x-python","patch_set":8,"id":"3759c4c3_bf3167d8","line":652,"range":{"start_line":652,"start_character":43,"end_line":652,"end_character":45},"in_reply_to":"69e372b6_a6cc1c11","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":659,"context_line":"            return True"},{"line_number":660,"context_line":"        return False"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def set_nas_security_options(self, is_new_cinder_install):"},{"line_number":663,"context_line":"        \"\"\"Determine the setting to use for Secure NAS options."},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        This method must be overridden by child wishing to use secure"}],"source_content_type":"text/x-python","patch_set":8,"id":"8b77ae62_137ecb84","line":662,"range":{"start_line":662,"start_character":39,"end_line":662,"end_character":62},"updated":"2020-11-23 20:33:29.000000000","message":"is_new_cinder_install: bool\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":659,"context_line":"            return True"},{"line_number":660,"context_line":"        return False"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def set_nas_security_options(self, is_new_cinder_install):"},{"line_number":663,"context_line":"        \"\"\"Determine the setting to use for Secure NAS options."},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        This method must be overridden by child wishing to use secure"}],"source_content_type":"text/x-python","patch_set":8,"id":"35d22a73_134a7cb0","line":662,"range":{"start_line":662,"start_character":39,"end_line":662,"end_character":62},"in_reply_to":"8b77ae62_137ecb84","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":682,"context_line":"                    \"information on a secure NFS configuration.\","},{"line_number":683,"context_line":"                    doc_html)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    def _determine_nas_security_option_setting(self, nas_option, mount_point,"},{"line_number":686,"context_line":"                                               is_new_cinder_install):"},{"line_number":687,"context_line":"        \"\"\"Determine NAS security option setting when \u0027auto\u0027 is assigned."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        This method determines the final \u0027true\u0027/\u0027false\u0027 setting of an NAS"}],"source_content_type":"text/x-python","patch_set":8,"id":"42a3527c_308e60ee","line":686,"range":{"start_line":685,"start_character":53,"end_line":686,"end_character":70},"updated":"2020-11-23 20:33:29.000000000","message":"nas_option: str\nmount_point: str\nis_new_cinder_install: bool\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                    \"information on a secure NFS configuration.\","},{"line_number":683,"context_line":"                    doc_html)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    def _determine_nas_security_option_setting(self, nas_option, mount_point,"},{"line_number":686,"context_line":"                                               is_new_cinder_install):"},{"line_number":687,"context_line":"        \"\"\"Determine NAS security option setting when \u0027auto\u0027 is assigned."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        This method determines the final \u0027true\u0027/\u0027false\u0027 setting of an NAS"}],"source_content_type":"text/x-python","patch_set":8,"id":"62ef3e2b_e8fbd8ad","line":686,"range":{"start_line":685,"start_character":53,"end_line":686,"end_character":70},"in_reply_to":"42a3527c_308e60ee","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":753,"context_line":"    # to avoid using temporary volume snapshots when creating volume clones,"},{"line_number":754,"context_line":"    # when possible."},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    _always_use_temp_snap_when_cloning \u003d True"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":759,"context_line":"        self._remotefsclient: remotefs_brick.RemoteFsClient \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"5d4f0008_f8dae85a","line":756,"range":{"start_line":756,"start_character":4,"end_line":756,"end_character":38},"updated":"2020-11-23 20:33:29.000000000","message":"_always_use_temp_snap_when_cloning: bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4f19080820dd6aed5f76dfa4d26b7e4c2e656ed7","unresolved":false,"context_lines":[{"line_number":753,"context_line":"    # to avoid using temporary volume snapshots when creating volume clones,"},{"line_number":754,"context_line":"    # when possible."},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    _always_use_temp_snap_when_cloning \u003d True"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":759,"context_line":"        self._remotefsclient: remotefs_brick.RemoteFsClient \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"68730a31_94d08af2","line":756,"range":{"start_line":756,"start_character":4,"end_line":756,"end_character":38},"in_reply_to":"53f16fcb_972b414a","updated":"2022-03-28 20:36:52.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":753,"context_line":"    # to avoid using temporary volume snapshots when creating volume clones,"},{"line_number":754,"context_line":"    # when possible."},{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    _always_use_temp_snap_when_cloning \u003d True"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":759,"context_line":"        self._remotefsclient: remotefs_brick.RemoteFsClient \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"53f16fcb_972b414a","line":756,"range":{"start_line":756,"start_character":4,"end_line":756,"end_character":38},"in_reply_to":"5d4f0008_f8dae85a","updated":"2020-12-02 16:51:56.000000000","message":"This is not needed.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    _always_use_temp_snap_when_cloning \u003d True"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":759,"context_line":"        self._remotefsclient: remotefs_brick.RemoteFsClient \u003d None"},{"line_number":760,"context_line":"        self.base: ty.Optional[str] \u003d None"},{"line_number":761,"context_line":"        self._nova: ty.Optional[db.base.Base] \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"57f6caaf_8c69dc8e","line":758,"range":{"start_line":758,"start_character":38,"end_line":758,"end_character":40},"updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4f19080820dd6aed5f76dfa4d26b7e4c2e656ed7","unresolved":false,"context_lines":[{"line_number":755,"context_line":""},{"line_number":756,"context_line":"    _always_use_temp_snap_when_cloning \u003d True"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":759,"context_line":"        self._remotefsclient: remotefs_brick.RemoteFsClient \u003d None"},{"line_number":760,"context_line":"        self.base: ty.Optional[str] \u003d None"},{"line_number":761,"context_line":"        self._nova: ty.Optional[db.base.Base] \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f53c3e9_b88bd088","line":758,"range":{"start_line":758,"start_character":38,"end_line":758,"end_character":40},"in_reply_to":"57f6caaf_8c69dc8e","updated":"2022-03-28 20:36:52.000000000","message":"This is not needed, see\n    https://github.com/python/mypy/issues/3358","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":761,"context_line":"        self._nova: ty.Optional[db.base.Base] \u003d None"},{"line_number":762,"context_line":"        super(RemoteFSSnapDriverBase, self).__init__(*args, **kwargs)"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def do_setup(self, context):"},{"line_number":765,"context_line":"        super(RemoteFSSnapDriverBase, self).do_setup(context)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        self._nova \u003d compute.API()"}],"source_content_type":"text/x-python","patch_set":8,"id":"e282b09a_08b1aef0","line":764,"range":{"start_line":764,"start_character":23,"end_line":764,"end_character":32},"updated":"2020-11-23 20:33:29.000000000","message":"context: context.RequestContext\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":761,"context_line":"        self._nova: ty.Optional[db.base.Base] \u003d None"},{"line_number":762,"context_line":"        super(RemoteFSSnapDriverBase, self).__init__(*args, **kwargs)"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def do_setup(self, context):"},{"line_number":765,"context_line":"        super(RemoteFSSnapDriverBase, self).do_setup(context)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        self._nova \u003d compute.API()"}],"source_content_type":"text/x-python","patch_set":8,"id":"d8bc4d7b_136bafdf","line":764,"range":{"start_line":764,"start_character":23,"end_line":764,"end_character":32},"in_reply_to":"e282b09a_08b1aef0","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        self._nova \u003d compute.API()"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    def snapshot_revert_use_temp_snapshot(self):"},{"line_number":770,"context_line":"        # Considering that RemoteFS based drivers use COW images"},{"line_number":771,"context_line":"        # for storing snapshots, having chains of such images,"},{"line_number":772,"context_line":"        # creating a backup snapshot when reverting one is not"}],"source_content_type":"text/x-python","patch_set":8,"id":"f16d3c4d_0801b5df","line":769,"range":{"start_line":769,"start_character":46,"end_line":769,"end_character":48},"updated":"2020-11-23 20:33:29.000000000","message":"return -\u003e bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        self._nova \u003d compute.API()"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    def snapshot_revert_use_temp_snapshot(self):"},{"line_number":770,"context_line":"        # Considering that RemoteFS based drivers use COW images"},{"line_number":771,"context_line":"        # for storing snapshots, having chains of such images,"},{"line_number":772,"context_line":"        # creating a backup snapshot when reverting one is not"}],"source_content_type":"text/x-python","patch_set":8,"id":"2a4ffc4e_bc810ced","line":769,"range":{"start_line":769,"start_character":46,"end_line":769,"end_character":48},"in_reply_to":"f16d3c4d_0801b5df","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":773,"context_line":"        # actutally helpful."},{"line_number":774,"context_line":"        return False"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def _local_volume_dir(self, volume):"},{"line_number":777,"context_line":"        share \u003d volume.provider_location"},{"line_number":778,"context_line":"        local_dir \u003d self._get_mount_point_for_share(share)"},{"line_number":779,"context_line":"        return local_dir"}],"source_content_type":"text/x-python","patch_set":8,"id":"86c3fef1_07f71321","line":776,"range":{"start_line":776,"start_character":32,"end_line":776,"end_character":40},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":773,"context_line":"        # actutally helpful."},{"line_number":774,"context_line":"        return False"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def _local_volume_dir(self, volume):"},{"line_number":777,"context_line":"        share \u003d volume.provider_location"},{"line_number":778,"context_line":"        local_dir \u003d self._get_mount_point_for_share(share)"},{"line_number":779,"context_line":"        return local_dir"}],"source_content_type":"text/x-python","patch_set":8,"id":"d05bc2e9_8ac5fcd8","line":776,"range":{"start_line":776,"start_character":32,"end_line":776,"end_character":40},"in_reply_to":"86c3fef1_07f71321","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":778,"context_line":"        local_dir \u003d self._get_mount_point_for_share(share)"},{"line_number":779,"context_line":"        return local_dir"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def _local_path_volume(self, volume):"},{"line_number":782,"context_line":"        path_to_disk \u003d os.path.join("},{"line_number":783,"context_line":"            self._local_volume_dir(volume),"},{"line_number":784,"context_line":"            volume.name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"57fb9fff_7469d268","line":781,"range":{"start_line":781,"start_character":33,"end_line":781,"end_character":41},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":778,"context_line":"        local_dir \u003d self._get_mount_point_for_share(share)"},{"line_number":779,"context_line":"        return local_dir"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def _local_path_volume(self, volume):"},{"line_number":782,"context_line":"        path_to_disk \u003d os.path.join("},{"line_number":783,"context_line":"            self._local_volume_dir(volume),"},{"line_number":784,"context_line":"            volume.name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f439f71f_bc63fb05","line":781,"range":{"start_line":781,"start_character":33,"end_line":781,"end_character":41},"in_reply_to":"57fb9fff_7469d268","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":"        return path_to_disk"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def _get_new_snap_path(self, snapshot):"},{"line_number":789,"context_line":"        vol_path \u003d self.local_path(snapshot.volume)"},{"line_number":790,"context_line":"        snap_path \u003d \u0027%s.%s\u0027 % (vol_path, snapshot.id)"},{"line_number":791,"context_line":"        return snap_path"}],"source_content_type":"text/x-python","patch_set":8,"id":"7b9169aa_0e4aba56","line":788,"range":{"start_line":788,"start_character":33,"end_line":788,"end_character":43},"updated":"2020-11-23 20:33:29.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":"        return path_to_disk"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def _get_new_snap_path(self, snapshot):"},{"line_number":789,"context_line":"        vol_path \u003d self.local_path(snapshot.volume)"},{"line_number":790,"context_line":"        snap_path \u003d \u0027%s.%s\u0027 % (vol_path, snapshot.id)"},{"line_number":791,"context_line":"        return snap_path"}],"source_content_type":"text/x-python","patch_set":8,"id":"d3300f67_0e3aeeed","line":788,"range":{"start_line":788,"start_character":33,"end_line":788,"end_character":43},"in_reply_to":"7b9169aa_0e4aba56","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":790,"context_line":"        snap_path \u003d \u0027%s.%s\u0027 % (vol_path, snapshot.id)"},{"line_number":791,"context_line":"        return snap_path"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def _local_path_volume_info(self, volume):"},{"line_number":794,"context_line":"        return \u0027%s%s\u0027 % (self.local_path(volume), \u0027.info\u0027)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def _read_file(self, filename):"}],"source_content_type":"text/x-python","patch_set":8,"id":"a6b5537f_d02c52a2","line":793,"range":{"start_line":793,"start_character":38,"end_line":793,"end_character":46},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        snap_path \u003d \u0027%s.%s\u0027 % (vol_path, snapshot.id)"},{"line_number":791,"context_line":"        return snap_path"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def _local_path_volume_info(self, volume):"},{"line_number":794,"context_line":"        return \u0027%s%s\u0027 % (self.local_path(volume), \u0027.info\u0027)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def _read_file(self, filename):"}],"source_content_type":"text/x-python","patch_set":8,"id":"c276c98c_5054dd07","line":793,"range":{"start_line":793,"start_character":38,"end_line":793,"end_character":46},"in_reply_to":"a6b5537f_d02c52a2","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":793,"context_line":"    def _local_path_volume_info(self, volume):"},{"line_number":794,"context_line":"        return \u0027%s%s\u0027 % (self.local_path(volume), \u0027.info\u0027)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def _read_file(self, filename):"},{"line_number":797,"context_line":"        \"\"\"This method is to make it easier to stub out code for testing."},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        Returns a string representing the contents of the file."}],"source_content_type":"text/x-python","patch_set":8,"id":"0a63e354_d584ac84","line":796,"range":{"start_line":796,"start_character":25,"end_line":796,"end_character":35},"updated":"2020-11-23 20:33:29.000000000","message":"filename: str\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":793,"context_line":"    def _local_path_volume_info(self, volume):"},{"line_number":794,"context_line":"        return \u0027%s%s\u0027 % (self.local_path(volume), \u0027.info\u0027)"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def _read_file(self, filename):"},{"line_number":797,"context_line":"        \"\"\"This method is to make it easier to stub out code for testing."},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        Returns a string representing the contents of the file."}],"source_content_type":"text/x-python","patch_set":8,"id":"613d6997_20692d35","line":796,"range":{"start_line":796,"start_character":25,"end_line":796,"end_character":35},"in_reply_to":"0a63e354_d584ac84","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":802,"context_line":"        with open(filename, \u0027r\u0027) as f:"},{"line_number":803,"context_line":"            return f.read()"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def _write_info_file(self, info_path, snap_info):"},{"line_number":806,"context_line":"        if \u0027active\u0027 not in snap_info.keys():"},{"line_number":807,"context_line":"            msg \u003d _(\"\u0027active\u0027 must be present when writing snap_info.\")"},{"line_number":808,"context_line":"            raise exception.RemoteFSException(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3295be1f_3fe50767","line":805,"range":{"start_line":805,"start_character":31,"end_line":805,"end_character":53},"updated":"2020-11-23 20:33:29.000000000","message":"info_path: str\nsnap_info: dict\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        with open(filename, \u0027r\u0027) as f:"},{"line_number":803,"context_line":"            return f.read()"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def _write_info_file(self, info_path, snap_info):"},{"line_number":806,"context_line":"        if \u0027active\u0027 not in snap_info.keys():"},{"line_number":807,"context_line":"            msg \u003d _(\"\u0027active\u0027 must be present when writing snap_info.\")"},{"line_number":808,"context_line":"            raise exception.RemoteFSException(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ac1870a_521cf758","line":805,"range":{"start_line":805,"start_character":31,"end_line":805,"end_character":53},"in_reply_to":"3295be1f_3fe50767","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":817,"context_line":"        with open(info_path, \u0027w\u0027) as f:"},{"line_number":818,"context_line":"            json.dump(snap_info, f, indent\u003d1, sort_keys\u003dTrue)"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"    def _qemu_img_info_base(self, path, volume_name, basedir,"},{"line_number":821,"context_line":"                            ext_bf_template\u003dNone,"},{"line_number":822,"context_line":"                            force_share\u003dFalse,"},{"line_number":823,"context_line":"                            run_as_root\u003dFalse):"},{"line_number":824,"context_line":"        \"\"\"Sanitize image_utils\u0027 qemu_img_info."},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"        This code expects to deal only with relative filenames."}],"source_content_type":"text/x-python","patch_set":8,"id":"3303c7cd_3a54972b","line":823,"range":{"start_line":820,"start_character":34,"end_line":823,"end_character":47},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nvolume_name: str\nbasedir: str\next_bf_template: BackingFileTemplate\nforce_share: bool\nrun_as_root: bool\nreturn -\u003e imageutils.QemuImgInfo","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        return info"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"    def _qemu_img_info(self, path, volume_name):"},{"line_number":877,"context_line":"        raise NotImplementedError()"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"    def _img_commit(self, path, passphrase_file\u003dNone, backing_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fb2430b4_98546630","line":876,"range":{"start_line":876,"start_character":29,"end_line":876,"end_character":48},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\nvolume_name: str\nreturn -\u003e imageutils.QemuImgInfo","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        return info"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"    def _qemu_img_info(self, path, volume_name):"},{"line_number":877,"context_line":"        raise NotImplementedError()"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"    def _img_commit(self, path, passphrase_file\u003dNone, backing_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"d781c509_b2a44ecd","line":876,"range":{"start_line":876,"start_character":29,"end_line":876,"end_character":48},"in_reply_to":"3d1a8be0_d6c1af02","updated":"2020-12-02 16:51:56.000000000","message":"Done for the parameters, will look at how to best handle the NoReturn overrides etc in another patch.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        return info"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"    def _qemu_img_info(self, path, volume_name):"},{"line_number":877,"context_line":"        raise NotImplementedError()"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"    def _img_commit(self, path, passphrase_file\u003dNone, backing_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3d1a8be0_d6c1af02","line":876,"range":{"start_line":876,"start_character":29,"end_line":876,"end_character":48},"in_reply_to":"fb2430b4_98546630","updated":"2020-11-25 13:12:23.000000000","message":"return -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":876,"context_line":"    def _qemu_img_info(self, path, volume_name):"},{"line_number":877,"context_line":"        raise NotImplementedError()"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"    def _img_commit(self, path, passphrase_file\u003dNone, backing_file\u003dNone):"},{"line_number":880,"context_line":"        # TODO(eharney): this is not using the correct permissions for"},{"line_number":881,"context_line":"        # NFS snapshots"},{"line_number":882,"context_line":"        #  It needs to run as root for volumes attached to instances, but"}],"source_content_type":"text/x-python","patch_set":8,"id":"8dcfd450_cd716470","line":879,"range":{"start_line":879,"start_character":26,"end_line":879,"end_character":73},"updated":"2020-11-23 20:33:29.000000000","message":"path: str\npassphrase_file: ty.Optional[str]\nbacking_file: ty.Optional[str]\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":903,"context_line":"        self._execute(*cmd, run_as_root\u003dself._execute_as_root)"},{"line_number":904,"context_line":"        self._delete(path)"},{"line_number":905,"context_line":""},{"line_number":906,"context_line":"    def _rebase_img(self, image, backing_file, volume_format,"},{"line_number":907,"context_line":"                    passphrase_file\u003dNone):"},{"line_number":908,"context_line":"        # qemu-img create must run as root, because it reads from the"},{"line_number":909,"context_line":"        # backing file, which will be owned by qemu:qemu if attached to an"},{"line_number":910,"context_line":"        # instance."}],"source_content_type":"text/x-python","patch_set":8,"id":"7c7d60db_85877393","line":907,"range":{"start_line":906,"start_character":26,"end_line":907,"end_character":42},"updated":"2020-11-23 20:33:29.000000000","message":"image: str\nbacking_file: str\nvolume_format: str\npassphrase_file: ty.Optional[str]\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":903,"context_line":"        self._execute(*cmd, run_as_root\u003dself._execute_as_root)"},{"line_number":904,"context_line":"        self._delete(path)"},{"line_number":905,"context_line":""},{"line_number":906,"context_line":"    def _rebase_img(self, image, backing_file, volume_format,"},{"line_number":907,"context_line":"                    passphrase_file\u003dNone):"},{"line_number":908,"context_line":"        # qemu-img create must run as root, because it reads from the"},{"line_number":909,"context_line":"        # backing file, which will be owned by qemu:qemu if attached to an"},{"line_number":910,"context_line":"        # instance."}],"source_content_type":"text/x-python","patch_set":8,"id":"1bf34be2_4625aa7c","line":907,"range":{"start_line":906,"start_character":26,"end_line":907,"end_character":42},"in_reply_to":"7c7d60db_85877393","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":924,"context_line":""},{"line_number":925,"context_line":"        self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def _read_info_file(self, info_path, empty_if_missing\u003dFalse):"},{"line_number":928,"context_line":"        \"\"\"Return dict of snapshot information."},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"           :param info_path: path to file"}],"source_content_type":"text/x-python","patch_set":8,"id":"64e60122_fbe6ea05","line":927,"range":{"start_line":927,"start_character":30,"end_line":927,"end_character":65},"updated":"2020-11-23 20:33:29.000000000","message":"info_path: str\nempty_if_missing: bool\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":924,"context_line":""},{"line_number":925,"context_line":"        self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def _read_info_file(self, info_path, empty_if_missing\u003dFalse):"},{"line_number":928,"context_line":"        \"\"\"Return dict of snapshot information."},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"           :param info_path: path to file"}],"source_content_type":"text/x-python","patch_set":8,"id":"7d413072_30d36d5f","line":927,"range":{"start_line":927,"start_character":30,"end_line":927,"end_character":65},"in_reply_to":"64e60122_fbe6ea05","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        return json.loads(self._read_file(info_path))"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"    def _get_higher_image_path(self, snapshot):"},{"line_number":941,"context_line":"        volume \u003d snapshot.volume"},{"line_number":942,"context_line":"        info_path \u003d self._local_path_volume_info(volume)"},{"line_number":943,"context_line":"        snap_info \u003d self._read_info_file(info_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"d7d71a6c_dcb7dc47","line":940,"range":{"start_line":940,"start_character":37,"end_line":940,"end_character":47},"updated":"2020-11-23 20:33:29.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e str\n\nIt might return None as well. Should we use TypeVar(\u0027StrOrNone\u0027, str, None)?","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        return json.loads(self._read_file(info_path))"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"    def _get_higher_image_path(self, snapshot):"},{"line_number":941,"context_line":"        volume \u003d snapshot.volume"},{"line_number":942,"context_line":"        info_path \u003d self._local_path_volume_info(volume)"},{"line_number":943,"context_line":"        snap_info \u003d self._read_info_file(info_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"187613eb_aa11f170","line":940,"range":{"start_line":940,"start_character":37,"end_line":940,"end_character":47},"in_reply_to":"44a5b9ba_016f4ed7","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        return json.loads(self._read_file(info_path))"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"    def _get_higher_image_path(self, snapshot):"},{"line_number":941,"context_line":"        volume \u003d snapshot.volume"},{"line_number":942,"context_line":"        info_path \u003d self._local_path_volume_info(volume)"},{"line_number":943,"context_line":"        snap_info \u003d self._read_info_file(info_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"44a5b9ba_016f4ed7","line":940,"range":{"start_line":940,"start_character":37,"end_line":940,"end_character":47},"in_reply_to":"d7d71a6c_dcb7dc47","updated":"2020-11-25 13:12:23.000000000","message":"`return -\u003e ty.Optional[str]` should be fine.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":956,"context_line":"                           None)"},{"line_number":957,"context_line":"        return higher_file"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def _get_backing_chain_for_path(self, volume, path):"},{"line_number":960,"context_line":"        \"\"\"Returns list of dicts containing backing-chain information."},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"        Includes \u0027filename\u0027, and \u0027backing-filename\u0027 for each"}],"source_content_type":"text/x-python","patch_set":8,"id":"cf5b5ed9_d34b718e","line":959,"range":{"start_line":959,"start_character":42,"end_line":959,"end_character":56},"updated":"2020-11-23 20:33:29.000000000","message":"volume: objects.Volume\npath: str\nreturn -\u003e ty.List[dict]","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"05a47ac99d4aef9f5f8bfdeeb430832378098d99","unresolved":true,"context_lines":[{"line_number":970,"context_line":""},{"line_number":971,"context_line":"        \"\"\""},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        output \u003d []"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        info \u003d self._qemu_img_info(path, volume.name)"},{"line_number":976,"context_line":"        new_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"e13150a8_9cb8940e","line":973,"range":{"start_line":973,"start_character":8,"end_line":973,"end_character":14},"updated":"2020-11-25 13:12:23.000000000","message":"output: ty.List[dict]","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        return output"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"    def _get_hash_str(self, base_str):"},{"line_number":996,"context_line":"        \"\"\"Return a string that represents hash of base_str."},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        Returns string in a hex format."}],"source_content_type":"text/x-python","patch_set":8,"id":"23a0e50a_d065b9ec","line":995,"range":{"start_line":995,"start_character":28,"end_line":995,"end_character":38},"updated":"2020-11-23 20:33:29.000000000","message":"base_str: str\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        return output"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"    def _get_hash_str(self, base_str):"},{"line_number":996,"context_line":"        \"\"\"Return a string that represents hash of base_str."},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        Returns string in a hex format."}],"source_content_type":"text/x-python","patch_set":8,"id":"26b89c8d_c88a34e2","line":995,"range":{"start_line":995,"start_character":28,"end_line":995,"end_character":38},"in_reply_to":"23a0e50a_d065b9ec","updated":"2020-12-02 16:51:56.000000000","message":"This one needs a bit of a closer look.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":1001,"context_line":"            base_str \u003d base_str.encode(\u0027utf-8\u0027)"},{"line_number":1002,"context_line":"        return hashlib.md5(base_str).hexdigest()"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"    def _get_mount_point_for_share(self, share):"},{"line_number":1005,"context_line":"        \"\"\"Return mount point for share."},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        :param share: example 172.18.194.100:/var/fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"6ba75ea5_8db936af","line":1004,"range":{"start_line":1004,"start_character":41,"end_line":1004,"end_character":48},"updated":"2020-11-23 20:33:29.000000000","message":"share: str\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"            base_str \u003d base_str.encode(\u0027utf-8\u0027)"},{"line_number":1002,"context_line":"        return hashlib.md5(base_str).hexdigest()"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"    def _get_mount_point_for_share(self, share):"},{"line_number":1005,"context_line":"        \"\"\"Return mount point for share."},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        :param share: example 172.18.194.100:/var/fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"e765b5f3_c61a5417","line":1004,"range":{"start_line":1004,"start_character":41,"end_line":1004,"end_character":48},"in_reply_to":"6ba75ea5_8db936af","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":1008,"context_line":"        \"\"\""},{"line_number":1009,"context_line":"        return self._remotefsclient.get_mount_point(share)"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    def _get_available_capacity(self, share):"},{"line_number":1012,"context_line":"        \"\"\"Calculate available space on the share."},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"        :param share: example 172.18.194.100:/var/fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"596afd0e_9e180cd6","line":1011,"range":{"start_line":1011,"start_character":38,"end_line":1011,"end_character":45},"updated":"2020-11-23 20:33:29.000000000","message":"share: str\nreturn -\u003e ty.Tuple[int, int]","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"        \"\"\""},{"line_number":1009,"context_line":"        return self._remotefsclient.get_mount_point(share)"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    def _get_available_capacity(self, share):"},{"line_number":1012,"context_line":"        \"\"\"Calculate available space on the share."},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"        :param share: example 172.18.194.100:/var/fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"05efbb47_c63a0885","line":1011,"range":{"start_line":1011,"start_character":38,"end_line":1011,"end_character":45},"in_reply_to":"596afd0e_9e180cd6","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"c17e6ac9fc25d15fdd7d5726b7906c6141330d46","unresolved":true,"context_lines":[{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"        return available, size"},{"line_number":1027,"context_line":""},{"line_number":1028,"context_line":"    def _get_capacity_info(self, remotefs_share):"},{"line_number":1029,"context_line":"        available, size \u003d self._get_available_capacity(remotefs_share)"},{"line_number":1030,"context_line":"        return size, available, size - available"},{"line_number":1031,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"2dad699e_346aaf31","line":1028,"range":{"start_line":1028,"start_character":33,"end_line":1028,"end_character":49},"updated":"2020-11-23 20:33:29.000000000","message":"remotefs_share: str\nreturn -\u003e ty.Tuple[int, int, int]","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1032,"context_line":"    def _get_mount_point_base(self) -\u003e ty.Optional[str]:"},{"line_number":1033,"context_line":"        return self.base"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def _copy_volume_to_image(self, context, volume, image_service,"},{"line_number":1036,"context_line":"                              image_meta, store_id\u003dNone):"},{"line_number":1037,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        # If snapshots exist, flatten to a temporary image, and upload it"}],"source_content_type":"text/x-python","patch_set":8,"id":"6b8e4f92_20bc8f64","line":1036,"range":{"start_line":1035,"start_character":36,"end_line":1036,"end_character":57},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nimage_service: glance.GlanceImageService\nimage_meta: dict\nstore_id: None\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"    def _get_mount_point_base(self) -\u003e ty.Optional[str]:"},{"line_number":1033,"context_line":"        return self.base"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def _copy_volume_to_image(self, context, volume, image_service,"},{"line_number":1036,"context_line":"                              image_meta, store_id\u003dNone):"},{"line_number":1037,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        # If snapshots exist, flatten to a temporary image, and upload it"}],"source_content_type":"text/x-python","patch_set":8,"id":"6a3dda4b_fd774207","line":1036,"range":{"start_line":1035,"start_character":36,"end_line":1036,"end_character":57},"in_reply_to":"6b8e4f92_20bc8f64","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1068,"context_line":"                                       volume,"},{"line_number":1069,"context_line":"                                       run_as_root\u003dself._execute_as_root)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"    def get_active_image_from_info(self, volume):"},{"line_number":1072,"context_line":"        \"\"\"Returns filename of the active image from the info file.\"\"\""},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"        info_file \u003d self._local_path_volume_info(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5b0c8a4a_dbfc4dfd","line":1071,"range":{"start_line":1071,"start_character":41,"end_line":1071,"end_character":49},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"                                       volume,"},{"line_number":1069,"context_line":"                                       run_as_root\u003dself._execute_as_root)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"    def get_active_image_from_info(self, volume):"},{"line_number":1072,"context_line":"        \"\"\"Returns filename of the active image from the info file.\"\"\""},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"        info_file \u003d self._local_path_volume_info(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ac95c965_7b7440b0","line":1071,"range":{"start_line":1071,"start_character":41,"end_line":1071,"end_character":49},"in_reply_to":"5b0c8a4a_dbfc4dfd","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        return snap_info[\u0027active\u0027]"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"    def _local_path_active_image(self, volume):"},{"line_number":1086,"context_line":"        active_fname \u003d self.get_active_image_from_info(volume)"},{"line_number":1087,"context_line":"        vol_dir \u003d self._local_volume_dir(volume)"},{"line_number":1088,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"b5b0697b_4483edb4","line":1085,"range":{"start_line":1085,"start_character":39,"end_line":1085,"end_character":47},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        return snap_info[\u0027active\u0027]"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"    def _local_path_active_image(self, volume):"},{"line_number":1086,"context_line":"        active_fname \u003d self.get_active_image_from_info(volume)"},{"line_number":1087,"context_line":"        vol_dir \u003d self._local_volume_dir(volume)"},{"line_number":1088,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"83562143_763da8ec","line":1085,"range":{"start_line":1085,"start_character":39,"end_line":1085,"end_character":47},"in_reply_to":"b5b0697b_4483edb4","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1089,"context_line":"        active_fpath \u003d os.path.join(vol_dir, active_fname)"},{"line_number":1090,"context_line":"        return active_fpath"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"    def _get_snapshot_backing_file(self, snapshot):"},{"line_number":1093,"context_line":"        info_path \u003d self._local_path_volume_info(snapshot.volume)"},{"line_number":1094,"context_line":"        snap_info \u003d self._read_info_file(info_path)"},{"line_number":1095,"context_line":"        vol_dir \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"6a2c9dd3_69e03017","line":1092,"range":{"start_line":1092,"start_character":41,"end_line":1092,"end_character":51},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"        active_fpath \u003d os.path.join(vol_dir, active_fname)"},{"line_number":1090,"context_line":"        return active_fpath"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"    def _get_snapshot_backing_file(self, snapshot):"},{"line_number":1093,"context_line":"        info_path \u003d self._local_path_volume_info(snapshot.volume)"},{"line_number":1094,"context_line":"        snap_info \u003d self._read_info_file(info_path)"},{"line_number":1095,"context_line":"        vol_dir \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f3ef116f_53d70cc3","line":1092,"range":{"start_line":1092,"start_character":41,"end_line":1092,"end_character":51},"in_reply_to":"6a2c9dd3_69e03017","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1100,"context_line":"        # Find the file which backs this file, which represents the point"},{"line_number":1101,"context_line":"        # in which this snapshot was created."},{"line_number":1102,"context_line":"        # TODO: something is wrong here"},{"line_number":1103,"context_line":"        img_info \u003d self._qemu_img_info(forward_path)  # type: ignore"},{"line_number":1104,"context_line":"        return img_info.backing_file"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"    def _snapshots_exist(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"cfac2ae7_d4b28640","line":1103,"updated":"2020-12-01 00:10:00.000000000","message":"L876 defines this method to require 2 arguments:\n\n    def _qemu_img_info(self, path, volume_name)\n\nI wonder why this is not causing bugs.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":1100,"context_line":"        # Find the file which backs this file, which represents the point"},{"line_number":1101,"context_line":"        # in which this snapshot was created."},{"line_number":1102,"context_line":"        # TODO: something is wrong here"},{"line_number":1103,"context_line":"        img_info \u003d self._qemu_img_info(forward_path)  # type: ignore"},{"line_number":1104,"context_line":"        return img_info.backing_file"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"    def _snapshots_exist(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"02b53028_8b68c7c7","line":1103,"in_reply_to":"c21a1f13_c33b47e9","updated":"2022-05-09 14:21:24.000000000","message":"The method _get_snapshot_backing_file is only called from windows_smbfs driver[1]\nwhich has the _qemu_img_info overridden which has the volume_name parameter as optional[2] hence it doesn\u0027t raise any error but we should correct it here.\n\n[1] https://github.com/openstack/cinder/blob/23cb29cf94d2aadd82b2727b0733a3591a5da810/cinder/volume/drivers/windows/smbfs.py#L533-L534\n[2] https://github.com/openstack/cinder/blob/23cb29cf94d2aadd82b2727b0733a3591a5da810/cinder/volume/drivers/windows/smbfs.py#L388","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"261118a96457c3cd08dd84d3ee5da7427822bbeb","unresolved":true,"context_lines":[{"line_number":1100,"context_line":"        # Find the file which backs this file, which represents the point"},{"line_number":1101,"context_line":"        # in which this snapshot was created."},{"line_number":1102,"context_line":"        # TODO: something is wrong here"},{"line_number":1103,"context_line":"        img_info \u003d self._qemu_img_info(forward_path)  # type: ignore"},{"line_number":1104,"context_line":"        return img_info.backing_file"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"    def _snapshots_exist(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"c21a1f13_c33b47e9","line":1103,"in_reply_to":"cfac2ae7_d4b28640","updated":"2020-12-02 14:53:21.000000000","message":"I\u0027ve writted this bug to track this particular issue:\n    https://bugs.launchpad.net/cinder/+bug/1852348","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1103,"context_line":"        img_info \u003d self._qemu_img_info(forward_path)  # type: ignore"},{"line_number":1104,"context_line":"        return img_info.backing_file"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"    def _snapshots_exist(self, volume):"},{"line_number":1107,"context_line":"        if not volume.provider_location:"},{"line_number":1108,"context_line":"            return False"},{"line_number":1109,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"f646f01b_c00ba21c","line":1106,"range":{"start_line":1106,"start_character":31,"end_line":1106,"end_character":39},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nreturn -\u003e bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"        img_info \u003d self._qemu_img_info(forward_path)  # type: ignore"},{"line_number":1104,"context_line":"        return img_info.backing_file"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"    def _snapshots_exist(self, volume):"},{"line_number":1107,"context_line":"        if not volume.provider_location:"},{"line_number":1108,"context_line":"            return False"},{"line_number":1109,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"cd65c110_4388a02d","line":1106,"range":{"start_line":1106,"start_character":31,"end_line":1106,"end_character":39},"in_reply_to":"f646f01b_c00ba21c","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"        return not utils.paths_normcase_equal(active_fpath, base_vol_path)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"    def _is_volume_attached(self, volume):"},{"line_number":1116,"context_line":"        return volume.attach_status \u003d\u003d fields.VolumeAttachStatus.ATTACHED"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    def _create_cloned_volume(self, volume, src_vref, context):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ada2760f_0e2ccd15","line":1115,"range":{"start_line":1115,"start_character":34,"end_line":1115,"end_character":42},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nreturn -\u003e bool","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"        return not utils.paths_normcase_equal(active_fpath, base_vol_path)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"    def _is_volume_attached(self, volume):"},{"line_number":1116,"context_line":"        return volume.attach_status \u003d\u003d fields.VolumeAttachStatus.ATTACHED"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    def _create_cloned_volume(self, volume, src_vref, context):"}],"source_content_type":"text/x-python","patch_set":8,"id":"4de18ce4_383b4b0e","line":1115,"range":{"start_line":1115,"start_character":34,"end_line":1115,"end_character":42},"in_reply_to":"ada2760f_0e2ccd15","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"    def _is_volume_attached(self, volume):"},{"line_number":1116,"context_line":"        return volume.attach_status \u003d\u003d fields.VolumeAttachStatus.ATTACHED"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    def _create_cloned_volume(self, volume, src_vref, context):"},{"line_number":1119,"context_line":"        LOG.info(\u0027Cloning volume %(src)s to volume %(dst)s\u0027,"},{"line_number":1120,"context_line":"                 {\u0027src\u0027: src_vref.id,"},{"line_number":1121,"context_line":"                  \u0027dst\u0027: volume.id})"}],"source_content_type":"text/x-python","patch_set":8,"id":"d727b4c9_88c1edac","line":1118,"range":{"start_line":1118,"start_character":36,"end_line":1118,"end_character":63},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsrv_vref: objects.Volume\ncontext: context.RequestContext\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"    def _is_volume_attached(self, volume):"},{"line_number":1116,"context_line":"        return volume.attach_status \u003d\u003d fields.VolumeAttachStatus.ATTACHED"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    def _create_cloned_volume(self, volume, src_vref, context):"},{"line_number":1119,"context_line":"        LOG.info(\u0027Cloning volume %(src)s to volume %(dst)s\u0027,"},{"line_number":1120,"context_line":"                 {\u0027src\u0027: src_vref.id,"},{"line_number":1121,"context_line":"                  \u0027dst\u0027: volume.id})"}],"source_content_type":"text/x-python","patch_set":8,"id":"83a8d741_26a6195e","line":1118,"range":{"start_line":1118,"start_character":36,"end_line":1118,"end_character":63},"in_reply_to":"d727b4c9_88c1edac","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"        return {\u0027provider_location\u0027: src_vref.provider_location}"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def _copy_volume_image(self, src_path, dest_path):"},{"line_number":1188,"context_line":"        shutil.copyfile(src_path, dest_path)"},{"line_number":1189,"context_line":"        self._set_rw_permissions(dest_path)"},{"line_number":1190,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5ae35aca_48a37259","line":1187,"range":{"start_line":1187,"start_character":33,"end_line":1187,"end_character":54},"updated":"2020-12-01 00:10:00.000000000","message":"src_path: str\ndest_path: str\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"        return {\u0027provider_location\u0027: src_vref.provider_location}"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def _copy_volume_image(self, src_path, dest_path):"},{"line_number":1188,"context_line":"        shutil.copyfile(src_path, dest_path)"},{"line_number":1189,"context_line":"        self._set_rw_permissions(dest_path)"},{"line_number":1190,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"50e1050b_805eed34","line":1187,"range":{"start_line":1187,"start_character":33,"end_line":1187,"end_character":54},"in_reply_to":"5ae35aca_48a37259","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1188,"context_line":"        shutil.copyfile(src_path, dest_path)"},{"line_number":1189,"context_line":"        self._set_rw_permissions(dest_path)"},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"    def _delete_stale_snapshot(self, snapshot):"},{"line_number":1192,"context_line":"        info_path \u003d self._local_path_volume_info(snapshot.volume)"},{"line_number":1193,"context_line":"        snap_info \u003d self._read_info_file(info_path)"},{"line_number":1194,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3450a905_09468dff","line":1191,"range":{"start_line":1191,"start_character":37,"end_line":1191,"end_character":47},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"        shutil.copyfile(src_path, dest_path)"},{"line_number":1189,"context_line":"        self._set_rw_permissions(dest_path)"},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"    def _delete_stale_snapshot(self, snapshot):"},{"line_number":1192,"context_line":"        info_path \u003d self._local_path_volume_info(snapshot.volume)"},{"line_number":1193,"context_line":"        snap_info \u003d self._read_info_file(info_path)"},{"line_number":1194,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"514bb67a_4d990075","line":1191,"range":{"start_line":1191,"start_character":37,"end_line":1191,"end_character":47},"in_reply_to":"3450a905_09468dff","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1204,"context_line":"        del(snap_info[snapshot.id])"},{"line_number":1205,"context_line":"        self._write_info_file(info_path, snap_info)"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    def _delete_snapshot(self, snapshot):"},{"line_number":1208,"context_line":"        \"\"\"Delete a snapshot."},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        If volume status is \u0027available\u0027, delete snapshot here in Cinder"}],"source_content_type":"text/x-python","patch_set":8,"id":"ae9d5dd9_a66a31ec","line":1207,"range":{"start_line":1207,"start_character":31,"end_line":1207,"end_character":41},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"        del(snap_info[snapshot.id])"},{"line_number":1205,"context_line":"        self._write_info_file(info_path, snap_info)"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    def _delete_snapshot(self, snapshot):"},{"line_number":1208,"context_line":"        \"\"\"Delete a snapshot."},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        If volume status is \u0027available\u0027, delete snapshot here in Cinder"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ca0b996_53b3271a","line":1207,"range":{"start_line":1207,"start_character":31,"end_line":1207,"end_character":41},"in_reply_to":"ae9d5dd9_a66a31ec","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1381,"context_line":"        del(snap_info[snapshot.id])"},{"line_number":1382,"context_line":"        self._write_info_file(info_path, snap_info)"},{"line_number":1383,"context_line":""},{"line_number":1384,"context_line":"    def _create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":1385,"context_line":"        \"\"\"Creates a volume from a snapshot."},{"line_number":1386,"context_line":""},{"line_number":1387,"context_line":"        Snapshot must not be the active snapshot. (offline)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5039b3_6c45924e","line":1384,"range":{"start_line":1384,"start_character":43,"end_line":1384,"end_character":61},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsnapshot: objects.Snapshot\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        return {\u0027provider_location\u0027: volume.provider_location}"},{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"    def _copy_volume_from_snapshot(self, snapshot, volume, volume_size,"},{"line_number":1414,"context_line":"                                   src_encryption_key_id\u003dNone,"},{"line_number":1415,"context_line":"                                   new_encryption_key_id\u003dNone):"},{"line_number":1416,"context_line":"        raise NotImplementedError()"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"    def _do_create_snapshot(self, snapshot, backing_filename,"}],"source_content_type":"text/x-python","patch_set":8,"id":"afec41da_9c2d7041","line":1415,"range":{"start_line":1413,"start_character":41,"end_line":1415,"end_character":63},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nvolume: objects.Volume\nvolume_size: int\nsrc_encryption_key_id: ty.Optional[str]\nnew_encryption_key_id: ty.Optional[str]\nreturn -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        return {\u0027provider_location\u0027: volume.provider_location}"},{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"    def _copy_volume_from_snapshot(self, snapshot, volume, volume_size,"},{"line_number":1414,"context_line":"                                   src_encryption_key_id\u003dNone,"},{"line_number":1415,"context_line":"                                   new_encryption_key_id\u003dNone):"},{"line_number":1416,"context_line":"        raise NotImplementedError()"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"    def _do_create_snapshot(self, snapshot, backing_filename,"}],"source_content_type":"text/x-python","patch_set":8,"id":"2ee43d8b_daecb930","line":1415,"range":{"start_line":1413,"start_character":41,"end_line":1415,"end_character":63},"in_reply_to":"afec41da_9c2d7041","updated":"2020-12-02 16:51:56.000000000","message":"Suggest handling the NoReturn part of this in another patchset.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1415,"context_line":"                                   new_encryption_key_id\u003dNone):"},{"line_number":1416,"context_line":"        raise NotImplementedError()"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"    def _do_create_snapshot(self, snapshot, backing_filename,"},{"line_number":1419,"context_line":"                            new_snap_path):"},{"line_number":1420,"context_line":"        \"\"\"Create a QCOW2 file backed by another file."},{"line_number":1421,"context_line":""},{"line_number":1422,"context_line":"        :param snapshot: snapshot reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"aa645c19_ded4dfc4","line":1419,"range":{"start_line":1418,"start_character":34,"end_line":1419,"end_character":43},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nbacking_filename: str\nnew_snap_path: str\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"                                   new_encryption_key_id\u003dNone):"},{"line_number":1416,"context_line":"        raise NotImplementedError()"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"    def _do_create_snapshot(self, snapshot, backing_filename,"},{"line_number":1419,"context_line":"                            new_snap_path):"},{"line_number":1420,"context_line":"        \"\"\"Create a QCOW2 file backed by another file."},{"line_number":1421,"context_line":""},{"line_number":1422,"context_line":"        :param snapshot: snapshot reference"}],"source_content_type":"text/x-python","patch_set":8,"id":"7b9b7549_44f534d1","line":1419,"range":{"start_line":1418,"start_character":34,"end_line":1419,"end_character":43},"in_reply_to":"aa645c19_ded4dfc4","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1523,"context_line":"                       new_snap_path]"},{"line_number":1524,"context_line":"            self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"    def _create_snapshot(self, snapshot: objects.Snapshot):"},{"line_number":1527,"context_line":"        \"\"\"Create a snapshot."},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"        If volume is attached, call to Nova to create snapshot, providing a"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfb056d3_ee1c8f59","line":1526,"range":{"start_line":1526,"start_character":57,"end_line":1526,"end_character":59},"updated":"2020-12-01 00:10:00.000000000","message":"return -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1523,"context_line":"                       new_snap_path]"},{"line_number":1524,"context_line":"            self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"    def _create_snapshot(self, snapshot: objects.Snapshot):"},{"line_number":1527,"context_line":"        \"\"\"Create a snapshot."},{"line_number":1528,"context_line":""},{"line_number":1529,"context_line":"        If volume is attached, call to Nova to create snapshot, providing a"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff48d9ef_56f2755a","line":1526,"range":{"start_line":1526,"start_character":57,"end_line":1526,"end_character":59},"in_reply_to":"dfb056d3_ee1c8f59","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1664,"context_line":"        snap_info[snapshot.id] \u003d os.path.basename(new_snap_path)"},{"line_number":1665,"context_line":"        self._write_info_file(info_path, snap_info)"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def _create_snapshot_online(self, snapshot, backing_filename,"},{"line_number":1668,"context_line":"                                new_snap_path):"},{"line_number":1669,"context_line":"        # Perform online snapshot via Nova"},{"line_number":1670,"context_line":"        self._do_create_snapshot(snapshot,"},{"line_number":1671,"context_line":"                                 backing_filename,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ee225b1e_b544c368","line":1668,"range":{"start_line":1667,"start_character":38,"end_line":1668,"end_character":47},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nbacking_filename: str\nnew_snap_path: str\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1664,"context_line":"        snap_info[snapshot.id] \u003d os.path.basename(new_snap_path)"},{"line_number":1665,"context_line":"        self._write_info_file(info_path, snap_info)"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def _create_snapshot_online(self, snapshot, backing_filename,"},{"line_number":1668,"context_line":"                                new_snap_path):"},{"line_number":1669,"context_line":"        # Perform online snapshot via Nova"},{"line_number":1670,"context_line":"        self._do_create_snapshot(snapshot,"},{"line_number":1671,"context_line":"                                 backing_filename,"}],"source_content_type":"text/x-python","patch_set":8,"id":"522c7354_80acac8a","line":1668,"range":{"start_line":1667,"start_character":38,"end_line":1668,"end_character":47},"in_reply_to":"ee225b1e_b544c368","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1734,"context_line":"                        \u0027for creation of snapshot %s.\u0027) % snapshot.id"},{"line_number":1735,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1736,"context_line":""},{"line_number":1737,"context_line":"    def _delete_snapshot_online(self, context, snapshot, info):"},{"line_number":1738,"context_line":"        # Update info over the course of this method"},{"line_number":1739,"context_line":"        # active file never changes"},{"line_number":1740,"context_line":"        info_path \u003d self._local_path_volume_info(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"6e24e8a4_fecd53b7","line":1737,"range":{"start_line":1737,"start_character":38,"end_line":1737,"end_character":63},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nsnapshot: objects.Snapshot\ninfo: dict\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                        \u0027for creation of snapshot %s.\u0027) % snapshot.id"},{"line_number":1735,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1736,"context_line":""},{"line_number":1737,"context_line":"    def _delete_snapshot_online(self, context, snapshot, info):"},{"line_number":1738,"context_line":"        # Update info over the course of this method"},{"line_number":1739,"context_line":"        # active file never changes"},{"line_number":1740,"context_line":"        info_path \u003d self._local_path_volume_info(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"6dfca53b_67a4ebda","line":1737,"range":{"start_line":1737,"start_character":38,"end_line":1737,"end_character":63},"in_reply_to":"6e24e8a4_fecd53b7","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1783,"context_line":"            self._local_volume_dir(snapshot.volume), file_to_delete)"},{"line_number":1784,"context_line":"        self._delete(path_to_delete)"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def _nova_assisted_vol_snap_delete(self, context, snapshot, delete_info):"},{"line_number":1787,"context_line":"        try:"},{"line_number":1788,"context_line":"            assert self._nova is not None"},{"line_number":1789,"context_line":"            self._nova.delete_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":8,"id":"4f1186aa_994104f0","line":1786,"range":{"start_line":1786,"start_character":45,"end_line":1786,"end_character":77},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nsnapshot: objects.Snapshot\ndelete_info: dict\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1783,"context_line":"            self._local_volume_dir(snapshot.volume), file_to_delete)"},{"line_number":1784,"context_line":"        self._delete(path_to_delete)"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def _nova_assisted_vol_snap_delete(self, context, snapshot, delete_info):"},{"line_number":1787,"context_line":"        try:"},{"line_number":1788,"context_line":"            assert self._nova is not None"},{"line_number":1789,"context_line":"            self._nova.delete_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":8,"id":"19b45969_9b78a0a6","line":1786,"range":{"start_line":1786,"start_character":45,"end_line":1786,"end_character":77},"in_reply_to":"4f1186aa_994104f0","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1831,"context_line":"                    {\u0027id\u0027: snapshot.id}"},{"line_number":1832,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1833,"context_line":""},{"line_number":1834,"context_line":"    def _extend_volume(self, volume, size_gb):"},{"line_number":1835,"context_line":"        raise NotImplementedError()"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    def _revert_to_snapshot(self, context, volume, snapshot):"}],"source_content_type":"text/x-python","patch_set":8,"id":"d4bb2850_33de1d25","line":1834,"range":{"start_line":1834,"start_character":29,"end_line":1834,"end_character":46},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsize_gb: int\nreturn -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":1831,"context_line":"                    {\u0027id\u0027: snapshot.id}"},{"line_number":1832,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1833,"context_line":""},{"line_number":1834,"context_line":"    def _extend_volume(self, volume, size_gb):"},{"line_number":1835,"context_line":"        raise NotImplementedError()"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    def _revert_to_snapshot(self, context, volume, snapshot):"}],"source_content_type":"text/x-python","patch_set":8,"id":"e1b1c02c_31e4e75e","line":1834,"range":{"start_line":1834,"start_character":29,"end_line":1834,"end_character":46},"in_reply_to":"d4bb2850_33de1d25","updated":"2020-12-02 16:51:56.000000000","message":"Suggest handling the NoReturn in another patchset.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1834,"context_line":"    def _extend_volume(self, volume, size_gb):"},{"line_number":1835,"context_line":"        raise NotImplementedError()"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    def _revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":1838,"context_line":"        raise NotImplementedError()"},{"line_number":1839,"context_line":""},{"line_number":1840,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"8cfb0f4b_7aedf113","line":1837,"range":{"start_line":1837,"start_character":34,"end_line":1837,"end_character":61},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nsnapshot: objects.Snapshot\nreturn -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":1834,"context_line":"    def _extend_volume(self, volume, size_gb):"},{"line_number":1835,"context_line":"        raise NotImplementedError()"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    def _revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":1838,"context_line":"        raise NotImplementedError()"},{"line_number":1839,"context_line":""},{"line_number":1840,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"4be1c837_0aae6b6a","line":1837,"range":{"start_line":1837,"start_character":34,"end_line":1837,"end_character":61},"in_reply_to":"8cfb0f4b_7aedf113","updated":"2020-12-02 16:51:56.000000000","message":"Suggest handling the NoReturn in another patchset.","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1840,"context_line":""},{"line_number":1841,"context_line":"class RemoteFSSnapDriver(RemoteFSSnapDriverBase):"},{"line_number":1842,"context_line":"    @locked_volume_id_operation"},{"line_number":1843,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":1844,"context_line":"        \"\"\"Apply locking to the create snapshot operation.\"\"\""},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"        return self._create_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f8a6576_66f2bc9f","line":1843,"range":{"start_line":1843,"start_character":30,"end_line":1843,"end_character":40},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1840,"context_line":""},{"line_number":1841,"context_line":"class RemoteFSSnapDriver(RemoteFSSnapDriverBase):"},{"line_number":1842,"context_line":"    @locked_volume_id_operation"},{"line_number":1843,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":1844,"context_line":"        \"\"\"Apply locking to the create snapshot operation.\"\"\""},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"        return self._create_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f6069945_8f5cb843","line":1843,"range":{"start_line":1843,"start_character":30,"end_line":1843,"end_character":40},"in_reply_to":"9f8a6576_66f2bc9f","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        return self._create_snapshot(snapshot)"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    @locked_volume_id_operation"},{"line_number":1849,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":1850,"context_line":"        \"\"\"Apply locking to the delete snapshot operation.\"\"\""},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"        return self._delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"640e0d39_94597625","line":1849,"range":{"start_line":1849,"start_character":30,"end_line":1849,"end_character":40},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        return self._create_snapshot(snapshot)"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    @locked_volume_id_operation"},{"line_number":1849,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":1850,"context_line":"        \"\"\"Apply locking to the delete snapshot operation.\"\"\""},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"        return self._delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fc2e940e_ec62ec2c","line":1849,"range":{"start_line":1849,"start_character":30,"end_line":1849,"end_character":40},"in_reply_to":"640e0d39_94597625","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1852,"context_line":"        return self._delete_snapshot(snapshot)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"    @locked_volume_id_operation"},{"line_number":1855,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":1856,"context_line":"        return self._create_volume_from_snapshot(volume, snapshot)"},{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"    # TODO: should be locking on src_vref id -- bug #1852449"}],"source_content_type":"text/x-python","patch_set":8,"id":"c22c7de9_f9a1c7c2","line":1855,"range":{"start_line":1855,"start_character":42,"end_line":1855,"end_character":60},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsnapshot: objects.Snapshot\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"        return self._delete_snapshot(snapshot)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"    @locked_volume_id_operation"},{"line_number":1855,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":1856,"context_line":"        return self._create_volume_from_snapshot(volume, snapshot)"},{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"    # TODO: should be locking on src_vref id -- bug #1852449"}],"source_content_type":"text/x-python","patch_set":8,"id":"577f203a_4fc2e143","line":1855,"range":{"start_line":1855,"start_character":42,"end_line":1855,"end_character":60},"in_reply_to":"c22c7de9_f9a1c7c2","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"    # TODO: should be locking on src_vref id -- bug #1852449"},{"line_number":1859,"context_line":"    @locked_volume_id_operation"},{"line_number":1860,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":1861,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        return self._create_cloned_volume(volume, src_vref,"}],"source_content_type":"text/x-python","patch_set":8,"id":"05109ebb_4b24d09f","line":1860,"range":{"start_line":1860,"start_character":35,"end_line":1860,"end_character":53},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsrc_vref: objects.Volume\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"    # TODO: should be locking on src_vref id -- bug #1852449"},{"line_number":1859,"context_line":"    @locked_volume_id_operation"},{"line_number":1860,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":1861,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        return self._create_cloned_volume(volume, src_vref,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff897902_5c918cd9","line":1860,"range":{"start_line":1860,"start_character":35,"end_line":1860,"end_character":53},"in_reply_to":"05109ebb_4b24d09f","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1864,"context_line":"                                          src_vref.obj_context)"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"    @locked_volume_id_operation"},{"line_number":1867,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":1868,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"        return self._copy_volume_to_image(context, volume, image_service,"}],"source_content_type":"text/x-python","patch_set":8,"id":"674b1a09_b005c5c6","line":1867,"range":{"start_line":1867,"start_character":35,"end_line":1867,"end_character":79},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nimage_service: glance.GlanceImageService\nimage_meta: dict\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"                                          src_vref.obj_context)"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"    @locked_volume_id_operation"},{"line_number":1867,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":1868,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"        return self._copy_volume_to_image(context, volume, image_service,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3d50b0f0_e8cb4cd2","line":1867,"range":{"start_line":1867,"start_character":35,"end_line":1867,"end_character":79},"in_reply_to":"674b1a09_b005c5c6","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1871,"context_line":"                                          image_meta)"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"    @locked_volume_id_operation"},{"line_number":1874,"context_line":"    def extend_volume(self, volume, size_gb):"},{"line_number":1875,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":"    @locked_volume_id_operation"}],"source_content_type":"text/x-python","patch_set":8,"id":"95ba393c_c7fa07b0","line":1874,"range":{"start_line":1874,"start_character":28,"end_line":1874,"end_character":45},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsize_gb: int\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1871,"context_line":"                                          image_meta)"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"    @locked_volume_id_operation"},{"line_number":1874,"context_line":"    def extend_volume(self, volume, size_gb):"},{"line_number":1875,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":"    @locked_volume_id_operation"}],"source_content_type":"text/x-python","patch_set":8,"id":"e61f02a5_ef18de27","line":1874,"range":{"start_line":1874,"start_character":28,"end_line":1874,"end_character":45},"in_reply_to":"95ba393c_c7fa07b0","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1875,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":"    @locked_volume_id_operation"},{"line_number":1878,"context_line":"    def revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":1879,"context_line":"        \"\"\"Revert to specified snapshot.\"\"\""},{"line_number":1880,"context_line":""},{"line_number":1881,"context_line":"        return self._revert_to_snapshot(context, volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9af195f7_1b3b2d44","line":1878,"range":{"start_line":1878,"start_character":33,"end_line":1878,"end_character":60},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nsnapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1875,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":"    @locked_volume_id_operation"},{"line_number":1878,"context_line":"    def revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":1879,"context_line":"        \"\"\"Revert to specified snapshot.\"\"\""},{"line_number":1880,"context_line":""},{"line_number":1881,"context_line":"        return self._revert_to_snapshot(context, volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"14a6284b_928b2d09","line":1878,"range":{"start_line":1878,"start_character":33,"end_line":1878,"end_character":60},"in_reply_to":"9af195f7_1b3b2d44","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":"class RemoteFSSnapDriverDistributed(RemoteFSSnapDriverBase):"},{"line_number":1885,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{snapshot.volume.id}\u0027)"},{"line_number":1886,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":1887,"context_line":"        \"\"\"Apply locking to the create snapshot operation.\"\"\""},{"line_number":1888,"context_line":""},{"line_number":1889,"context_line":"        return self._create_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f0c383c0_20226529","line":1886,"range":{"start_line":1886,"start_character":30,"end_line":1886,"end_character":40},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":"class RemoteFSSnapDriverDistributed(RemoteFSSnapDriverBase):"},{"line_number":1885,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{snapshot.volume.id}\u0027)"},{"line_number":1886,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":1887,"context_line":"        \"\"\"Apply locking to the create snapshot operation.\"\"\""},{"line_number":1888,"context_line":""},{"line_number":1889,"context_line":"        return self._create_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9d4ec63a_a9564ffc","line":1886,"range":{"start_line":1886,"start_character":30,"end_line":1886,"end_character":40},"in_reply_to":"f0c383c0_20226529","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1889,"context_line":"        return self._create_snapshot(snapshot)"},{"line_number":1890,"context_line":""},{"line_number":1891,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{snapshot.volume.id}\u0027)"},{"line_number":1892,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":1893,"context_line":"        \"\"\"Apply locking to the delete snapshot operation.\"\"\""},{"line_number":1894,"context_line":""},{"line_number":1895,"context_line":"        return self._delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"178f219c_427f08b5","line":1892,"range":{"start_line":1892,"start_character":30,"end_line":1892,"end_character":40},"updated":"2020-12-01 00:10:00.000000000","message":"snapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1889,"context_line":"        return self._create_snapshot(snapshot)"},{"line_number":1890,"context_line":""},{"line_number":1891,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{snapshot.volume.id}\u0027)"},{"line_number":1892,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":1893,"context_line":"        \"\"\"Apply locking to the delete snapshot operation.\"\"\""},{"line_number":1894,"context_line":""},{"line_number":1895,"context_line":"        return self._delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c43026d9_70297a4b","line":1892,"range":{"start_line":1892,"start_character":30,"end_line":1892,"end_character":40},"in_reply_to":"178f219c_427f08b5","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1895,"context_line":"        return self._delete_snapshot(snapshot)"},{"line_number":1896,"context_line":""},{"line_number":1897,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1898,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":1899,"context_line":"        return self._create_volume_from_snapshot(volume, snapshot)"},{"line_number":1900,"context_line":""},{"line_number":1901,"context_line":"    # lock the source volume id first"}],"source_content_type":"text/x-python","patch_set":8,"id":"5bdf61e6_f8fc3044","line":1898,"range":{"start_line":1898,"start_character":42,"end_line":1898,"end_character":60},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsnapshot: objects.Snapshot\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1901,"context_line":"    # lock the source volume id first"},{"line_number":1902,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{src_vref.id}\u0027)"},{"line_number":1903,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1904,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":1905,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"        return self._create_cloned_volume(volume, src_vref,"}],"source_content_type":"text/x-python","patch_set":8,"id":"46e0fb4f_6810c1db","line":1904,"range":{"start_line":1904,"start_character":35,"end_line":1904,"end_character":53},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsrc_vref: objects.Volume\nreturn -\u003e dict","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1901,"context_line":"    # lock the source volume id first"},{"line_number":1902,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{src_vref.id}\u0027)"},{"line_number":1903,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1904,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":1905,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"        return self._create_cloned_volume(volume, src_vref,"}],"source_content_type":"text/x-python","patch_set":8,"id":"6c04fca9_c0fe6911","line":1904,"range":{"start_line":1904,"start_character":35,"end_line":1904,"end_character":53},"in_reply_to":"46e0fb4f_6810c1db","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1908,"context_line":"                                          src_vref.obj_context)"},{"line_number":1909,"context_line":""},{"line_number":1910,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1911,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":1912,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":"        return self._copy_volume_to_image(context, volume, image_service,"}],"source_content_type":"text/x-python","patch_set":8,"id":"177e2ba0_6b84c577","line":1911,"range":{"start_line":1911,"start_character":35,"end_line":1911,"end_character":79},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nimage_service: glance.GlanceImageService\nimage_meta: dict\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1908,"context_line":"                                          src_vref.obj_context)"},{"line_number":1909,"context_line":""},{"line_number":1910,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1911,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":1912,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":"        return self._copy_volume_to_image(context, volume, image_service,"}],"source_content_type":"text/x-python","patch_set":8,"id":"89db9c25_43a40278","line":1911,"range":{"start_line":1911,"start_character":35,"end_line":1911,"end_character":79},"in_reply_to":"177e2ba0_6b84c577","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1915,"context_line":"                                          image_meta)"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1918,"context_line":"    def extend_volume(self, volume, size_gb):"},{"line_number":1919,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1920,"context_line":""},{"line_number":1921,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"34fee487_68494b60","line":1918,"range":{"start_line":1918,"start_character":28,"end_line":1918,"end_character":45},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nsize_gb: int\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1915,"context_line":"                                          image_meta)"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1918,"context_line":"    def extend_volume(self, volume, size_gb):"},{"line_number":1919,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1920,"context_line":""},{"line_number":1921,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"caa8efd0_830385cf","line":1918,"range":{"start_line":1918,"start_character":28,"end_line":1918,"end_character":45},"in_reply_to":"34fee487_68494b60","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1919,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1920,"context_line":""},{"line_number":1921,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1922,"context_line":"    def revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":1923,"context_line":"        \"\"\"Revert to specified snapshot.\"\"\""},{"line_number":1924,"context_line":""},{"line_number":1925,"context_line":"        return self._revert_to_snapshot(context, volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f149fb9a_51e06838","line":1922,"range":{"start_line":1922,"start_character":33,"end_line":1922,"end_character":60},"updated":"2020-12-01 00:10:00.000000000","message":"context: context.RequestContext\nvolume: objects.Volume\nsnapshot: objects.Snapshot\nreturn -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1919,"context_line":"        return self._extend_volume(volume, size_gb)"},{"line_number":1920,"context_line":""},{"line_number":1921,"context_line":"    @coordination.synchronized(\u0027{self.driver_prefix}-{volume.id}\u0027)"},{"line_number":1922,"context_line":"    def revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":1923,"context_line":"        \"\"\"Revert to specified snapshot.\"\"\""},{"line_number":1924,"context_line":""},{"line_number":1925,"context_line":"        return self._revert_to_snapshot(context, volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":8,"id":"061f1e32_99e0c545","line":1922,"range":{"start_line":1922,"start_character":33,"end_line":1922,"end_character":60},"in_reply_to":"f149fb9a_51e06838","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1928,"context_line":"class RemoteFSPoolMixin(object):"},{"line_number":1929,"context_line":"    \"\"\"Drivers inheriting this will report each share as a pool.\"\"\""},{"line_number":1930,"context_line":""},{"line_number":1931,"context_line":"    def _find_share(self, volume):"},{"line_number":1932,"context_line":"        # We let the scheduler choose a pool for us."},{"line_number":1933,"context_line":"        pool_name \u003d self._get_pool_name_from_volume(volume)"},{"line_number":1934,"context_line":"        share \u003d self._get_share_from_pool_name(pool_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"109383fb_f4ff0127","line":1931,"range":{"start_line":1931,"start_character":26,"end_line":1931,"end_character":34},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1928,"context_line":"class RemoteFSPoolMixin(object):"},{"line_number":1929,"context_line":"    \"\"\"Drivers inheriting this will report each share as a pool.\"\"\""},{"line_number":1930,"context_line":""},{"line_number":1931,"context_line":"    def _find_share(self, volume):"},{"line_number":1932,"context_line":"        # We let the scheduler choose a pool for us."},{"line_number":1933,"context_line":"        pool_name \u003d self._get_pool_name_from_volume(volume)"},{"line_number":1934,"context_line":"        share \u003d self._get_share_from_pool_name(pool_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ea5a29e7_3319af19","line":1931,"range":{"start_line":1931,"start_character":26,"end_line":1931,"end_character":34},"in_reply_to":"109383fb_f4ff0127","updated":"2020-12-02 16:51:56.000000000","message":"Done.  Keep in mind, mixins are kind of tricky...  (i.e., what is self?)","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1934,"context_line":"        share \u003d self._get_share_from_pool_name(pool_name)"},{"line_number":1935,"context_line":"        return share"},{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"    def _get_pool_name_from_volume(self, volume):"},{"line_number":1938,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":1939,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":1940,"context_line":"        return pool_name"}],"source_content_type":"text/x-python","patch_set":8,"id":"8b486f13_0e1f8b55","line":1937,"range":{"start_line":1937,"start_character":41,"end_line":1937,"end_character":49},"updated":"2020-12-01 00:10:00.000000000","message":"volume: objects.Volume\nreturn -\u003e str","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1934,"context_line":"        share \u003d self._get_share_from_pool_name(pool_name)"},{"line_number":1935,"context_line":"        return share"},{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"    def _get_pool_name_from_volume(self, volume):"},{"line_number":1938,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":1939,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":1940,"context_line":"        return pool_name"}],"source_content_type":"text/x-python","patch_set":8,"id":"b52d2fd2_1057a5f9","line":1937,"range":{"start_line":1937,"start_character":41,"end_line":1937,"end_character":49},"in_reply_to":"8b486f13_0e1f8b55","updated":"2020-12-02 16:51:56.000000000","message":"Done","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1939,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":1940,"context_line":"        return pool_name"},{"line_number":1941,"context_line":""},{"line_number":1942,"context_line":"    def _get_pool_name_from_share(self, share):"},{"line_number":1943,"context_line":"        raise NotImplementedError()"},{"line_number":1944,"context_line":""},{"line_number":1945,"context_line":"    def _get_share_from_pool_name(self, pool_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"f3d7b137_f7046307","line":1942,"range":{"start_line":1942,"start_character":40,"end_line":1942,"end_character":47},"updated":"2020-12-01 00:10:00.000000000","message":"share: str\nreturn -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":false,"context_lines":[{"line_number":1939,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":1940,"context_line":"        return pool_name"},{"line_number":1941,"context_line":""},{"line_number":1942,"context_line":"    def _get_pool_name_from_share(self, share):"},{"line_number":1943,"context_line":"        raise NotImplementedError()"},{"line_number":1944,"context_line":""},{"line_number":1945,"context_line":"    def _get_share_from_pool_name(self, pool_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"240f9305_4c2cd545","line":1942,"range":{"start_line":1942,"start_character":40,"end_line":1942,"end_character":47},"in_reply_to":"f3d7b137_f7046307","updated":"2020-12-02 16:51:56.000000000","message":"Let\u0027s look at the NoReturn for mixins in a follow-up patch...","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1942,"context_line":"    def _get_pool_name_from_share(self, share):"},{"line_number":1943,"context_line":"        raise NotImplementedError()"},{"line_number":1944,"context_line":""},{"line_number":1945,"context_line":"    def _get_share_from_pool_name(self, pool_name):"},{"line_number":1946,"context_line":"        # To be implemented by drivers using pools."},{"line_number":1947,"context_line":"        raise NotImplementedError()"},{"line_number":1948,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"38dfcb61_30021162","line":1945,"range":{"start_line":1945,"start_character":40,"end_line":1945,"end_character":51},"updated":"2020-12-01 00:10:00.000000000","message":"pool_name: str\nreturn -\u003e NoReturn","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1946,"context_line":"        # To be implemented by drivers using pools."},{"line_number":1947,"context_line":"        raise NotImplementedError()"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"    @ty.no_type_check"},{"line_number":1950,"context_line":"    def _update_volume_stats(self):"},{"line_number":1951,"context_line":"        data \u003d {}"},{"line_number":1952,"context_line":"        pools \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"6c5ff52f_4141a6ff","line":1949,"range":{"start_line":1949,"start_character":8,"end_line":1949,"end_character":21},"updated":"2020-12-01 00:10:00.000000000","message":"Why is this necessary?","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7b5ba213f5fbdf19dd2fc28d4075bc89d5f12128","unresolved":true,"context_lines":[{"line_number":1946,"context_line":"        # To be implemented by drivers using pools."},{"line_number":1947,"context_line":"        raise NotImplementedError()"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"    @ty.no_type_check"},{"line_number":1950,"context_line":"    def _update_volume_stats(self):"},{"line_number":1951,"context_line":"        data \u003d {}"},{"line_number":1952,"context_line":"        pools \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"5c89d8eb_5360a3f2","line":1949,"range":{"start_line":1949,"start_character":8,"end_line":1949,"end_character":21},"in_reply_to":"6c5ff52f_4141a6ff","updated":"2020-12-02 16:51:56.000000000","message":"Since these mixin classes don\u0027t inherit from a base class, self.configuration etc. is undefined.  (Run \"tox -e mypy\" w/ this line removed.)","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3d1a6a752014f4104fc9bdd9983e02a30b856c35","unresolved":true,"context_lines":[{"line_number":1947,"context_line":"        raise NotImplementedError()"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"    @ty.no_type_check"},{"line_number":1950,"context_line":"    def _update_volume_stats(self):"},{"line_number":1951,"context_line":"        data \u003d {}"},{"line_number":1952,"context_line":"        pools \u003d []"},{"line_number":1953,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"e0e6125d_23ed64d8","line":1950,"range":{"start_line":1950,"start_character":33,"end_line":1950,"end_character":35},"updated":"2020-12-01 00:10:00.000000000","message":"return -\u003e None","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4f19080820dd6aed5f76dfa4d26b7e4c2e656ed7","unresolved":false,"context_lines":[{"line_number":1947,"context_line":"        raise NotImplementedError()"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"    @ty.no_type_check"},{"line_number":1950,"context_line":"    def _update_volume_stats(self):"},{"line_number":1951,"context_line":"        data \u003d {}"},{"line_number":1952,"context_line":"        pools \u003d []"},{"line_number":1953,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"24dd5c81_1b52db8d","line":1950,"range":{"start_line":1950,"start_character":33,"end_line":1950,"end_character":35},"in_reply_to":"e0e6125d_23ed64d8","updated":"2022-03-28 20:36:52.000000000","message":"I haven\u0027t yet figured out how to best handle some of these methods in the Mixin class yet, so I\u0027ve decorated this one with the no_type_check decorator.  (Removing that will indicate that self.configuration is missing at line 2061.)","commit_id":"77c935db3cec294223d9b3fd567a6452070049d0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":244,"context_line":"            provisioned_size +\u003d int(out.split()[0])"},{"line_number":245,"context_line":"        return round(provisioned_size / units.Gi, 2)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_mount_point_base(self) -\u003e Optional[str]:"},{"line_number":248,"context_line":"        \"\"\"Returns the mount point base for the remote fs."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"           This method facilitates returning mount point base"}],"source_content_type":"text/x-python","patch_set":12,"id":"4c397c74_e527baa1","line":247,"range":{"start_line":247,"start_character":39,"end_line":247,"end_character":52},"updated":"2022-05-09 14:21:24.000000000","message":"shouldn\u0027t we annotate the str part in overridden methods and just mention None here?","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1e019ffddf4307d59fd4876391d7fbd9cf5b932b","unresolved":true,"context_lines":[{"line_number":244,"context_line":"            provisioned_size +\u003d int(out.split()[0])"},{"line_number":245,"context_line":"        return round(provisioned_size / units.Gi, 2)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_mount_point_base(self) -\u003e Optional[str]:"},{"line_number":248,"context_line":"        \"\"\"Returns the mount point base for the remote fs."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"           This method facilitates returning mount point base"}],"source_content_type":"text/x-python","patch_set":12,"id":"57bf70cb_6057c321","line":247,"range":{"start_line":247,"start_character":39,"end_line":247,"end_character":52},"in_reply_to":"4c397c74_e527baa1","updated":"2022-05-10 18:55:34.000000000","message":"No -- since drivers overriding this method would return Optional[str], I think we want Optional[str] in the base, too.  Otherwise you get errors like\n\ncinder/volume/drivers/nfs.py: note: In member \"_get_mount_point_for_share\" of class \"NfsDriver\":\ncinder/volume/drivers/nfs.py:347:5: error: Return type \"str\" of \"_get_mount_point_for_share\" incompatible with return type\n\"NoReturn\" in supertype \"RemoteFSDriver\"  [override]\n        def _get_mount_point_for_share(self, nfs_share) -\u003e str:\n\nwhen adding types to the NFS driver.","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b9fb4f414c27d00aeecc0894df11662c7fdf2a2c","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            provisioned_size +\u003d int(out.split()[0])"},{"line_number":245,"context_line":"        return round(provisioned_size / units.Gi, 2)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_mount_point_base(self) -\u003e Optional[str]:"},{"line_number":248,"context_line":"        \"\"\"Returns the mount point base for the remote fs."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"           This method facilitates returning mount point base"}],"source_content_type":"text/x-python","patch_set":12,"id":"c5c0cad4_41872e7d","line":247,"range":{"start_line":247,"start_character":39,"end_line":247,"end_character":52},"in_reply_to":"57bf70cb_6057c321","updated":"2022-05-11 05:06:33.000000000","message":"Ack","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":419,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size,"},{"line_number":420,"context_line":"                      path, run_as_root\u003dself._execute_as_root)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def _create_regular_file(self, path, size) -\u003e None:"},{"line_number":423,"context_line":"        \"\"\"Creates a regular file of given size in GiB.\"\"\""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        block_size_mb \u003d 1"}],"source_content_type":"text/x-python","patch_set":12,"id":"10988e84_21ccdbf3","line":422,"range":{"start_line":422,"start_character":35,"end_line":422,"end_character":45},"updated":"2022-05-09 14:21:24.000000000","message":"don\u0027t they have same annotations as above?\n\n    def _create_regular_file(self, path: str, size: int) -\u003e None:","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1e019ffddf4307d59fd4876391d7fbd9cf5b932b","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size,"},{"line_number":420,"context_line":"                      path, run_as_root\u003dself._execute_as_root)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def _create_regular_file(self, path, size) -\u003e None:"},{"line_number":423,"context_line":"        \"\"\"Creates a regular file of given size in GiB.\"\"\""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        block_size_mb \u003d 1"}],"source_content_type":"text/x-python","patch_set":12,"id":"366f7c47_a59cb5b8","line":422,"range":{"start_line":422,"start_character":35,"end_line":422,"end_character":45},"in_reply_to":"10988e84_21ccdbf3","updated":"2022-05-10 18:55:34.000000000","message":"Done","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        LOG.debug(\"shares loaded: %s\", self.shares)"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def _get_mount_point_for_share(self, path: str):"},{"line_number":632,"context_line":"        raise NotImplementedError()"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"    def terminate_connection(self,"}],"source_content_type":"text/x-python","patch_set":12,"id":"0613951a_fbdff89b","line":631,"range":{"start_line":631,"start_character":51,"end_line":631,"end_character":52},"updated":"2022-05-09 14:21:24.000000000","message":"should we use NoReturn here?","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1e019ffddf4307d59fd4876391d7fbd9cf5b932b","unresolved":true,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        LOG.debug(\"shares loaded: %s\", self.shares)"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def _get_mount_point_for_share(self, path: str):"},{"line_number":632,"context_line":"        raise NotImplementedError()"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"    def terminate_connection(self,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a74494e_fb2246ba","line":631,"range":{"start_line":631,"start_character":51,"end_line":631,"end_character":52},"in_reply_to":"0613951a_fbdff89b","updated":"2022-05-10 18:55:34.000000000","message":"No, for the same reason as _get_mount_point_base above.","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b9fb4f414c27d00aeecc0894df11662c7fdf2a2c","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        LOG.debug(\"shares loaded: %s\", self.shares)"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def _get_mount_point_for_share(self, path: str):"},{"line_number":632,"context_line":"        raise NotImplementedError()"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"    def terminate_connection(self,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9b2494e5_5616f8f6","line":631,"range":{"start_line":631,"start_character":51,"end_line":631,"end_character":52},"in_reply_to":"7a74494e_fb2246ba","updated":"2022-05-11 05:06:33.000000000","message":"Ack","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":959,"context_line":""},{"line_number":960,"context_line":"        self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"    def _read_info_file(self, info_path: str, empty_if_missing\u003dFalse) -\u003e dict:"},{"line_number":963,"context_line":"        \"\"\"Return dict of snapshot information."},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"           :param info_path: path to file"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aa1610e_2fd66191","line":962,"range":{"start_line":962,"start_character":46,"end_line":962,"end_character":62},"updated":"2022-05-09 14:21:24.000000000","message":"bool?","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1e019ffddf4307d59fd4876391d7fbd9cf5b932b","unresolved":false,"context_lines":[{"line_number":959,"context_line":""},{"line_number":960,"context_line":"        self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"    def _read_info_file(self, info_path: str, empty_if_missing\u003dFalse) -\u003e dict:"},{"line_number":963,"context_line":"        \"\"\"Return dict of snapshot information."},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"           :param info_path: path to file"}],"source_content_type":"text/x-python","patch_set":12,"id":"02bbf6bb_f40451b8","line":962,"range":{"start_line":962,"start_character":46,"end_line":962,"end_character":62},"in_reply_to":"3aa1610e_2fd66191","updated":"2022-05-10 18:55:34.000000000","message":"Done","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":967,"context_line":"        \"\"\""},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"        if not os.path.exists(info_path):"},{"line_number":970,"context_line":"            if empty_if_missing is True:"},{"line_number":971,"context_line":"                return {}"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        return json.loads(self._read_file(info_path))"}],"source_content_type":"text/x-python","patch_set":12,"id":"99a37081_efa3c8b4","line":970,"range":{"start_line":970,"start_character":31,"end_line":970,"end_character":39},"updated":"2022-05-09 14:21:24.000000000","message":"not related but unneeded code","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        return output"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"    def _get_hash_str(self, base_str) -\u003e str:"},{"line_number":1034,"context_line":"        \"\"\"Return a string that represents hash of base_str."},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        Returns string in a hex format."}],"source_content_type":"text/x-python","patch_set":12,"id":"f807d844_0c35f98e","line":1033,"range":{"start_line":1033,"start_character":28,"end_line":1033,"end_character":36},"updated":"2022-05-09 14:21:24.000000000","message":"str?","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b9fb4f414c27d00aeecc0894df11662c7fdf2a2c","unresolved":false,"context_lines":[{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        return output"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"    def _get_hash_str(self, base_str) -\u003e str:"},{"line_number":1034,"context_line":"        \"\"\"Return a string that represents hash of base_str."},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        Returns string in a hex format."}],"source_content_type":"text/x-python","patch_set":12,"id":"d564fc4f_a2cfad63","line":1033,"range":{"start_line":1033,"start_character":28,"end_line":1033,"end_character":36},"in_reply_to":"4b5f838f_92685b14","updated":"2022-05-11 05:06:33.000000000","message":"Ack","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1e019ffddf4307d59fd4876391d7fbd9cf5b932b","unresolved":true,"context_lines":[{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        return output"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"    def _get_hash_str(self, base_str) -\u003e str:"},{"line_number":1034,"context_line":"        \"\"\"Return a string that represents hash of base_str."},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        Returns string in a hex format."}],"source_content_type":"text/x-python","patch_set":12,"id":"4b5f838f_92685b14","line":1033,"range":{"start_line":1033,"start_character":28,"end_line":1033,"end_character":36},"in_reply_to":"f807d844_0c35f98e","updated":"2022-05-10 18:55:34.000000000","message":"str doesn\u0027t work here until we remove the py2-compat code below.  Better to leave it blank for now and clean that up in another patch.","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        Returns string in a hex format."},{"line_number":1037,"context_line":"        \"\"\""},{"line_number":1038,"context_line":"        if isinstance(base_str, six.text_type):"},{"line_number":1039,"context_line":"            base_str \u003d base_str.encode(\u0027utf-8\u0027)"},{"line_number":1040,"context_line":"        return md5(base_str, usedforsecurity\u003dFalse).hexdigest()"},{"line_number":1041,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"231d0c34_fb56baf0","line":1038,"range":{"start_line":1038,"start_character":32,"end_line":1038,"end_character":45},"updated":"2022-05-09 14:21:24.000000000","message":"should probably get rid of this in drivers as well","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1e019ffddf4307d59fd4876391d7fbd9cf5b932b","unresolved":false,"context_lines":[{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        Returns string in a hex format."},{"line_number":1037,"context_line":"        \"\"\""},{"line_number":1038,"context_line":"        if isinstance(base_str, six.text_type):"},{"line_number":1039,"context_line":"            base_str \u003d base_str.encode(\u0027utf-8\u0027)"},{"line_number":1040,"context_line":"        return md5(base_str, usedforsecurity\u003dFalse).hexdigest()"},{"line_number":1041,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1be9d14e_f1119767","line":1038,"range":{"start_line":1038,"start_character":32,"end_line":1038,"end_character":45},"in_reply_to":"231d0c34_fb56baf0","updated":"2022-05-10 18:55:34.000000000","message":"Ack","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"689d3232ab0b5e82c4966dc8868bc2f94a363ec8","unresolved":true,"context_lines":[{"line_number":1076,"context_line":"                              volume: objects.Volume,"},{"line_number":1077,"context_line":"                              image_service,"},{"line_number":1078,"context_line":"                              image_meta: dict,"},{"line_number":1079,"context_line":"                              store_id\u003dNone) -\u003e None:"},{"line_number":1080,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        # If snapshots exist, flatten to a temporary image, and upload it"}],"source_content_type":"text/x-python","patch_set":12,"id":"f3af9063_31c57b67","line":1079,"range":{"start_line":1079,"start_character":30,"end_line":1079,"end_character":38},"updated":"2022-05-09 14:21:24.000000000","message":"str","commit_id":"f64fba8534038290e921fcf8ef125602e64dde39"}]}
