)]}'
{"cinder/tests/unit/test_hitachi_hnas_backend.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":214,"context_line":"Access configuration:                                                 \\n\\"},{"line_number":215,"context_line":"\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"file_clone_stat \u003d \"Clone: /nfs_cinder/cinder-lu                      \\n\\"},{"line_number":218,"context_line":"  SnapshotFile: FileHandle[00000000004010000d20116826ffffffffffffff] \\n\\n\\"},{"line_number":219,"context_line":"\""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"file_clone_stat_snap_file \u003d \"\\"},{"line_number":222,"context_line":"FileHandle[00000000004010000d20116826ffffffffffffff]                  \\n\\n\\"},{"line_number":223,"context_line":"References:                                                           \\n\\"},{"line_number":224,"context_line":"  Clone: /nfs_cinder/cinder-lu                                        \\n\\"},{"line_number":225,"context_line":"  Clone: /nfs_cinder/snapshot-lu-1                                    \\n\\"},{"line_number":226,"context_line":"  Clone: /nfs_cinder/snapshot-lu-2                                    \\n\\"},{"line_number":227,"context_line":"\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class HDSHNASBackendTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_3b1bc0cb","line":227,"range":{"start_line":217,"start_character":0,"end_line":227,"end_character":1},"updated":"2016-06-24 18:03:28.000000000","message":"Please add outputs considering empty (no lines) values from the storage.","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":214,"context_line":"Access configuration:                                                 \\n\\"},{"line_number":215,"context_line":"\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"file_clone_stat \u003d \"Clone: /nfs_cinder/cinder-lu                      \\n\\"},{"line_number":218,"context_line":"  SnapshotFile: FileHandle[00000000004010000d20116826ffffffffffffff] \\n\\n\\"},{"line_number":219,"context_line":"\""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"file_clone_stat_snap_file \u003d \"\\"},{"line_number":222,"context_line":"FileHandle[00000000004010000d20116826ffffffffffffff]                  \\n\\n\\"},{"line_number":223,"context_line":"References:                                                           \\n\\"},{"line_number":224,"context_line":"  Clone: /nfs_cinder/cinder-lu                                        \\n\\"},{"line_number":225,"context_line":"  Clone: /nfs_cinder/snapshot-lu-1                                    \\n\\"},{"line_number":226,"context_line":"  Clone: /nfs_cinder/snapshot-lu-2                                    \\n\\"},{"line_number":227,"context_line":"\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class HDSHNASBackendTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_8b6dc634","line":227,"range":{"start_line":217,"start_character":0,"end_line":227,"end_character":1},"in_reply_to":"3aaa91ec_3b1bc0cb","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"}],"cinder/tests/unit/test_hitachi_hnas_nfs.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        nfs_mount \u003d \"/opt/stack/data/cinder/mnt/\" + fake.SNAPSHOT_ID"},{"line_number":508,"context_line":"        path \u003d \"unmanage-snapshot-\" + fake.SNAPSHOT_ID"},{"line_number":509,"context_line":"        loc \u003d {\u0027provider_location\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":510,"context_line":"        existing_ref \u003d {\u0027source-name\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        self.mock_object(self.driver, \u0027_get_share_mount_and_vol_from_vol_ref\u0027,"},{"line_number":513,"context_line":"                         mock.Mock(return_value\u003d(nfs_share, nfs_mount, path)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_5bc4cc3e","line":510,"range":{"start_line":510,"start_character":6,"end_line":510,"end_character":65},"updated":"2016-06-24 18:03:28.000000000","message":"existing_ref should be a complete volume path like: 10.10.32.1:/openstack/vol_to_manage","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        nfs_mount \u003d \"/opt/stack/data/cinder/mnt/\" + fake.SNAPSHOT_ID"},{"line_number":508,"context_line":"        path \u003d \"unmanage-snapshot-\" + fake.SNAPSHOT_ID"},{"line_number":509,"context_line":"        loc \u003d {\u0027provider_location\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":510,"context_line":"        existing_ref \u003d {\u0027source-name\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        self.mock_object(self.driver, \u0027_get_share_mount_and_vol_from_vol_ref\u0027,"},{"line_number":513,"context_line":"                         mock.Mock(return_value\u003d(nfs_share, nfs_mount, path)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_53c9d678","line":510,"range":{"start_line":510,"start_character":6,"end_line":510,"end_character":65},"in_reply_to":"3aaa91ec_5bc4cc3e","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        nfs_mount \u003d \"/opt/stack/data/cinder/mnt/\" + fake.SNAPSHOT_ID"},{"line_number":526,"context_line":"        path \u003d \"unmanage-snapshot-\" + fake.SNAPSHOT_ID"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"        existing_ref \u003d {\u0027source-name\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"        self.mock_object(self.driver, \u0027_get_share_mount_and_vol_from_vol_ref\u0027,"},{"line_number":531,"context_line":"                         mock.Mock(return_value\u003d(nfs_share, nfs_mount, path)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_7be388d9","line":528,"range":{"start_line":528,"start_character":8,"end_line":528,"end_character":65},"updated":"2016-06-24 18:03:28.000000000","message":"same","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        nfs_mount \u003d \"/opt/stack/data/cinder/mnt/\" + fake.SNAPSHOT_ID"},{"line_number":526,"context_line":"        path \u003d \"unmanage-snapshot-\" + fake.SNAPSHOT_ID"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"        existing_ref \u003d {\u0027source-name\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"        self.mock_object(self.driver, \u0027_get_share_mount_and_vol_from_vol_ref\u0027,"},{"line_number":531,"context_line":"                         mock.Mock(return_value\u003d(nfs_share, nfs_mount, path)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_b3c8fa75","line":528,"range":{"start_line":528,"start_character":8,"end_line":528,"end_character":65},"in_reply_to":"3aaa91ec_7be388d9","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e0faf031ef1703d7db744fe4f6ac66001c97e16f","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        nfs_mount \u003d \"/opt/stack/data/cinder/mnt/\" + fake.SNAPSHOT_ID"},{"line_number":508,"context_line":"        path \u003d \"unmanage-snapshot-\" + fake.SNAPSHOT_ID"},{"line_number":509,"context_line":"        loc \u003d {\u0027provider_location\u0027: \u0027172.24.49.21:/fs-cinder\u0027}"},{"line_number":510,"context_line":"        existing_ref \u003d {\u0027source-name\u0027: \u0027172.24.49.21:/fs-cinder\u0027"},{"line_number":511,"context_line":"                                       + fake.SNAPSHOT_ID}"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.mock_object(self.driver, \u0027_get_share_mount_and_vol_from_vol_ref\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_09acb78a","line":510,"updated":"2016-06-30 17:47:28.000000000","message":"/fs-cinder/\u0027","commit_id":"c74a6fe567c9a9ca67edf386a6fff0025d4fff95"}],"cinder/volume/drivers/hitachi/hnas_backend.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)[1]"},{"line_number":826,"context_line":"        line \u003d lines.split(\u0027:\u0027)[1]"},{"line_number":827,"context_line":"        file_handler \u003d line[:-1].replace(\u0027 FileHandle[\u0027, \"\")"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"        LOG.debug(\"Volume handler found: %(fh)s.\", {\u0027fh\u0027: file_handler})"},{"line_number":830,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_e9933559","line":827,"range":{"start_line":827,"start_character":8,"end_line":827,"end_character":60},"updated":"2016-06-24 18:03:28.000000000","message":"What if the object is not a snapshot? The parser will break. It should raise a proper exception.","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)[1]"},{"line_number":826,"context_line":"        line \u003d lines.split(\u0027:\u0027)[1]"},{"line_number":827,"context_line":"        file_handler \u003d line[:-1].replace(\u0027 FileHandle[\u0027, \"\")"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"        LOG.debug(\"Volume handler found: %(fh)s.\", {\u0027fh\u0027: file_handler})"},{"line_number":830,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_583575d9","line":827,"range":{"start_line":827,"start_character":8,"end_line":827,"end_character":60},"in_reply_to":"3aaa91ec_e9933559","updated":"2016-06-28 17:46:40.000000000","message":"You are right. I\u0027m adding an exception to deal with this case. Thanks.","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b9e41e7d1756386b6df1fc264f8ff02ecb90db1c","unresolved":false,"context_lines":[{"line_number":854,"context_line":""},{"line_number":855,"context_line":"            for j in range(0, len(lines)):"},{"line_number":856,"context_line":"                if snap_name in lines[j]:"},{"line_number":857,"context_line":"                    LOG.debug(\"Snapshot %(snap)s found in children list from\""},{"line_number":858,"context_line":"                              \"%(vol)s!\", {\u0027snap\u0027: snap_name,"},{"line_number":859,"context_line":"                                           \u0027vol\u0027: volume_path})"},{"line_number":860,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_e38a2063","line":857,"range":{"start_line":857,"start_character":72,"end_line":857,"end_character":76},"updated":"2016-07-21 12:33:53.000000000","message":"Missing a blank space after \"from\"","commit_id":"14853bc855c146570bb8e3784b726cba639c3f11"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b9e41e7d1756386b6df1fc264f8ff02ecb90db1c","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                                           \u0027vol\u0027: volume_path})"},{"line_number":860,"context_line":"                    return True"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":"        LOG.debug(\"Snapshot %(snap)s was not found in children list from\""},{"line_number":863,"context_line":"                  \"%(vol)s, probably it is not the parent!\","},{"line_number":864,"context_line":"                  {\u0027snap\u0027: snap_name, \u0027vol\u0027: volume_path})"},{"line_number":865,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_83f24404","line":862,"range":{"start_line":862,"start_character":68,"end_line":862,"end_character":72},"updated":"2016-07-21 12:33:53.000000000","message":"same","commit_id":"14853bc855c146570bb8e3784b726cba639c3f11"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e7468a7e367ef0f07f61813abaecdd33e7586c7a","unresolved":false,"context_lines":[{"line_number":852,"context_line":""},{"line_number":853,"context_line":"            for line in lines:"},{"line_number":854,"context_line":"                if snap_name in line:"},{"line_number":855,"context_line":"                    LOG.debug(\"Snapshot %(snap)s found in children list from\""},{"line_number":856,"context_line":"                              \"%(vol)s!\", {\u0027snap\u0027: snap_name,"},{"line_number":857,"context_line":"                                           \u0027vol\u0027: volume_path})"},{"line_number":858,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ac371cc_d29b7164","line":855,"range":{"start_line":855,"start_character":71,"end_line":855,"end_character":76},"updated":"2016-08-18 04:42:49.000000000","message":"Missing blank space after \"from\".","commit_id":"6d7a408c71e7e12bf059ec84d105352fcaaedbc4"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e7468a7e367ef0f07f61813abaecdd33e7586c7a","unresolved":false,"context_lines":[{"line_number":857,"context_line":"                                           \u0027vol\u0027: volume_path})"},{"line_number":858,"context_line":"                    return True"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        LOG.debug(\"Snapshot %(snap)s was not found in children list from\""},{"line_number":861,"context_line":"                  \"%(vol)s, probably it is not the parent!\","},{"line_number":862,"context_line":"                  {\u0027snap\u0027: snap_name, \u0027vol\u0027: volume_path})"},{"line_number":863,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ac371cc_12a22999","line":860,"range":{"start_line":860,"start_character":68,"end_line":860,"end_character":72},"updated":"2016-08-18 04:42:49.000000000","message":"Same.","commit_id":"6d7a408c71e7e12bf059ec84d105352fcaaedbc4"}],"cinder/volume/drivers/hitachi/hnas_nfs.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        raise exception.ManageExistingInvalidReference("},{"line_number":494,"context_line":"            existing_ref\u003dvol_ref,"},{"line_number":495,"context_line":"            reason\u003d_(\u0027Volume not found on configured storage backend.\u0027))"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def manage_existing(self, volume, existing_vol_ref):"},{"line_number":498,"context_line":"        \"\"\"Manages an existing volume."}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_e9c21584","line":495,"range":{"start_line":495,"start_character":22,"end_line":495,"end_character":28},"updated":"2016-06-24 18:03:28.000000000","message":"Volume/snapshot ...","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        raise exception.ManageExistingInvalidReference("},{"line_number":494,"context_line":"            existing_ref\u003dvol_ref,"},{"line_number":495,"context_line":"            reason\u003d_(\u0027Volume not found on configured storage backend.\u0027))"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def manage_existing(self, volume, existing_vol_ref):"},{"line_number":498,"context_line":"        \"\"\"Manages an existing volume."}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_b9aa9b17","line":495,"range":{"start_line":495,"start_character":22,"end_line":495,"end_character":28},"in_reply_to":"3aaa91ec_e9c21584","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        except (OSError, ValueError):"},{"line_number":632,"context_line":"            exception_message \u003d (_(\"Failed to manage existing volume/snapshot \""},{"line_number":633,"context_line":"                                   \"%(name)s, because of error in getting \""},{"line_number":634,"context_line":"                                   \"it size.\"),"},{"line_number":635,"context_line":"                                 {\u0027name\u0027: existing_ref[\u0027source-name\u0027]})"},{"line_number":636,"context_line":"            LOG.exception(exception_message)"},{"line_number":637,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_e96695eb","line":634,"updated":"2016-06-24 18:03:28.000000000","message":"its","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        except (OSError, ValueError):"},{"line_number":632,"context_line":"            exception_message \u003d (_(\"Failed to manage existing volume/snapshot \""},{"line_number":633,"context_line":"                                   \"%(name)s, because of error in getting \""},{"line_number":634,"context_line":"                                   \"it size.\"),"},{"line_number":635,"context_line":"                                 {\u0027name\u0027: existing_ref[\u0027source-name\u0027]})"},{"line_number":636,"context_line":"            LOG.exception(exception_message)"},{"line_number":637,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_13c5955a","line":634,"in_reply_to":"3aaa91ec_e96695eb","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3bd31f44df7d642e716661b0b00248237e970345","unresolved":false,"context_lines":[{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def _check_snapshot_parent(self, volume, old_snap_name, share):"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        volume_id \u003d \u0027volume-\u0027 + volume.id"},{"line_number":647,"context_line":"        (fs, path, fs_label) \u003d self._get_service(volume)"},{"line_number":648,"context_line":"        # 172.24.49.34:/nfs_cinder"},{"line_number":649,"context_line":"        volume_path \u003d os.path.join(share.split(\u0027:\u0027)[1], volume_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_01e738ad","line":646,"range":{"start_line":646,"start_character":8,"end_line":646,"end_character":17},"updated":"2016-06-27 17:40:59.000000000","message":"s/volume_id/volume_name","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def _check_snapshot_parent(self, volume, old_snap_name, share):"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        volume_id \u003d \u0027volume-\u0027 + volume.id"},{"line_number":647,"context_line":"        (fs, path, fs_label) \u003d self._get_service(volume)"},{"line_number":648,"context_line":"        # 172.24.49.34:/nfs_cinder"},{"line_number":649,"context_line":"        volume_path \u003d os.path.join(share.split(\u0027:\u0027)[1], volume_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_b38121fe","line":646,"range":{"start_line":646,"start_character":8,"end_line":646,"end_character":17},"in_reply_to":"3aaa91ec_01e738ad","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3bd31f44df7d642e716661b0b00248237e970345","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def manage_existing_snapshot(self, snapshot, existing_ref):"},{"line_number":655,"context_line":"        # Attempt to find NFS share, NFS mount, and volume path from ref."},{"line_number":656,"context_line":"        (nfs_share, nfs_mount, path"},{"line_number":657,"context_line":"         ) \u003d self._get_share_mount_and_vol_from_vol_ref(existing_ref)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        LOG.info(_LI(\"Asked to manage NFS snapshot %(snap)s for volume \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_ade60b42","line":656,"range":{"start_line":656,"start_character":31,"end_line":656,"end_character":35},"updated":"2016-06-27 17:40:59.000000000","message":"Is there any case that this is a real path and not simply the volume name?\nIf there is not, I guess this could be renamed to vol_name (or similar) fit better what it really is.","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def manage_existing_snapshot(self, snapshot, existing_ref):"},{"line_number":655,"context_line":"        # Attempt to find NFS share, NFS mount, and volume path from ref."},{"line_number":656,"context_line":"        (nfs_share, nfs_mount, path"},{"line_number":657,"context_line":"         ) \u003d self._get_share_mount_and_vol_from_vol_ref(existing_ref)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        LOG.info(_LI(\"Asked to manage NFS snapshot %(snap)s for volume \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_5efd5d3a","line":656,"range":{"start_line":656,"start_character":31,"end_line":656,"end_character":35},"in_reply_to":"3aaa91ec_ade60b42","updated":"2016-06-28 17:46:40.000000000","message":"I didn\u0027t find any case where the return is different than volume or snapshot name. I\u0027m renaming this one.","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":662,"context_line":"                  \u0027vol\u0027: snapshot.volume_id,"},{"line_number":663,"context_line":"                  \u0027ref\u0027: existing_ref[\u0027source-name\u0027]})"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        # Check if the snapshot belongs to the volume"},{"line_number":668,"context_line":"        real_parent \u003d self._check_snapshot_parent(volume, path, nfs_share)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_e91e950a","line":665,"range":{"start_line":665,"start_character":16,"end_line":665,"end_character":35},"updated":"2016-06-24 18:03:28.000000000","message":"snapshot.volume","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":662,"context_line":"                  \u0027vol\u0027: snapshot.volume_id,"},{"line_number":663,"context_line":"                  \u0027ref\u0027: existing_ref[\u0027source-name\u0027]})"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        # Check if the snapshot belongs to the volume"},{"line_number":668,"context_line":"        real_parent \u003d self._check_snapshot_parent(volume, path, nfs_share)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_13aab570","line":665,"range":{"start_line":665,"start_character":16,"end_line":665,"end_character":35},"in_reply_to":"3aaa91ec_e91e950a","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3bd31f44df7d642e716661b0b00248237e970345","unresolved":false,"context_lines":[{"line_number":681,"context_line":"            src_snap \u003d os.path.join(nfs_mount, path)"},{"line_number":682,"context_line":"            dst_snap \u003d os.path.join(nfs_mount, snapshot.name)"},{"line_number":683,"context_line":"            try:"},{"line_number":684,"context_line":"                self._execute(\"mv\", src_snap, dst_snap, run_as_root\u003dFalse,"},{"line_number":685,"context_line":"                              check_exit_code\u003dTrue)"},{"line_number":686,"context_line":"                LOG.info(_LI(\"Setting newly managed Cinder snapshot name \""},{"line_number":687,"context_line":"                         \"to %(snap)s.\"), {\u0027snap\u0027: snapshot.name})"},{"line_number":688,"context_line":"                self._set_rw_permissions_for_all(dst_snap)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_6951c2d8","line":685,"range":{"start_line":684,"start_character":16,"end_line":685,"end_character":51},"updated":"2016-06-27 17:40:59.000000000","message":"suggestion: try to use _try_execute method\n(https://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L361)","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":681,"context_line":"            src_snap \u003d os.path.join(nfs_mount, path)"},{"line_number":682,"context_line":"            dst_snap \u003d os.path.join(nfs_mount, snapshot.name)"},{"line_number":683,"context_line":"            try:"},{"line_number":684,"context_line":"                self._execute(\"mv\", src_snap, dst_snap, run_as_root\u003dFalse,"},{"line_number":685,"context_line":"                              check_exit_code\u003dTrue)"},{"line_number":686,"context_line":"                LOG.info(_LI(\"Setting newly managed Cinder snapshot name \""},{"line_number":687,"context_line":"                         \"to %(snap)s.\"), {\u0027snap\u0027: snapshot.name})"},{"line_number":688,"context_line":"                self._set_rw_permissions_for_all(dst_snap)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_abb9a217","line":685,"range":{"start_line":684,"start_character":16,"end_line":685,"end_character":51},"in_reply_to":"3aaa91ec_6951c2d8","updated":"2016-06-28 17:46:40.000000000","message":"Should we change every other execute call to try_execute?","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c41ba7a49097e95c0b4de2c1e022229ca15f6ec7","unresolved":false,"context_lines":[{"line_number":700,"context_line":"        return self._manage_existing_get_size(existing_ref)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def unmanage_snapshot(self, snapshot):"},{"line_number":703,"context_line":"        snapshot_name \u003d CONF.snapshot_name_template % snapshot.id"},{"line_number":704,"context_line":"        path \u003d self._get_mount_point_for_share(snapshot.provider_location)"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"        new_name \u003d \"unmanage-\" + snapshot_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_3b5d8015","line":703,"range":{"start_line":703,"start_character":24,"end_line":703,"end_character":65},"updated":"2016-06-24 18:03:28.000000000","message":"CONF.snapshot_name_template % snapshot.id \u003d\u003d snapshot.name","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"584e02dcbd1ff73716863dba22eb2f91e0fc22bf","unresolved":false,"context_lines":[{"line_number":700,"context_line":"        return self._manage_existing_get_size(existing_ref)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def unmanage_snapshot(self, snapshot):"},{"line_number":703,"context_line":"        snapshot_name \u003d CONF.snapshot_name_template % snapshot.id"},{"line_number":704,"context_line":"        path \u003d self._get_mount_point_for_share(snapshot.provider_location)"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"        new_name \u003d \"unmanage-\" + snapshot_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_390fcbe2","line":703,"range":{"start_line":703,"start_character":24,"end_line":703,"end_character":65},"in_reply_to":"3aaa91ec_3b5d8015","updated":"2016-06-28 17:46:40.000000000","message":"Done","commit_id":"e22675b846747739a0487852ab4077f06c495a54"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e0faf031ef1703d7db744fe4f6ac66001c97e16f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                       Removed the option to use local SSC (ssh_enabled\u003dFalse)"},{"line_number":79,"context_line":"                       Updated to use versioned objects"},{"line_number":80,"context_line":"                       Changed the class name to HNASNFSDriver"},{"line_number":81,"context_line":"                       Deprecated XML config file"},{"line_number":82,"context_line":"    \"\"\""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_893f0786","line":81,"updated":"2016-06-30 17:47:28.000000000","message":"Added support to ...","commit_id":"c74a6fe567c9a9ca67edf386a6fff0025d4fff95"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"bfa98a06084337c5e294cf65a65ac40f77767134","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        try:"},{"line_number":719,"context_line":"            self._execute(\"mv\", old_path, new_path,"},{"line_number":720,"context_line":"                          run_as_root\u003dFalse, check_exit_code\u003dTrue)"},{"line_number":721,"context_line":"            LOG.info(_LI(\"Cinder NFS snapshot with current path %(cr)s is \""},{"line_number":722,"context_line":"                         \"no longer being managed.\"), {\u0027cr\u0027: old_path})"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"        except (OSError, ValueError):"},{"line_number":725,"context_line":"            LOG.exception(_LE(\"The NFS snapshot %(cr)s does not exist.\"),"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_3016b2f1","line":722,"range":{"start_line":721,"start_character":12,"end_line":722,"end_character":71},"updated":"2016-07-25 20:35:58.000000000","message":"This message could be improved to show the old and new paths (like it was in the unmanage volume function, for example).\n\nLOG.info(_LI(\"The snapshot with path %(old)s is no longer being managed by Cinder. However, it was not deleted and can be found in the new path %(cr)s.\"), {\u0027old\u0027: vol_path, \u0027cr\u0027: new_path})","commit_id":"ff10d9bf435080861763095bc30f087decd9841d"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"ca17dbf2efad5856c42d1417e1298eb1e0473b9f","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        try:"},{"line_number":719,"context_line":"            self._execute(\"mv\", old_path, new_path,"},{"line_number":720,"context_line":"                          run_as_root\u003dFalse, check_exit_code\u003dTrue)"},{"line_number":721,"context_line":"            LOG.info(_LI(\"Cinder NFS snapshot with current path %(cr)s is \""},{"line_number":722,"context_line":"                         \"no longer being managed.\"), {\u0027cr\u0027: old_path})"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"        except (OSError, ValueError):"},{"line_number":725,"context_line":"            LOG.exception(_LE(\"The NFS snapshot %(cr)s does not exist.\"),"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_218bd069","line":722,"range":{"start_line":721,"start_character":12,"end_line":722,"end_character":71},"in_reply_to":"dada55a8_3016b2f1","updated":"2016-07-27 12:18:08.000000000","message":"Done","commit_id":"ff10d9bf435080861763095bc30f087decd9841d"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"bfa98a06084337c5e294cf65a65ac40f77767134","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                         \"no longer being managed.\"), {\u0027cr\u0027: old_path})"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"        except (OSError, ValueError):"},{"line_number":725,"context_line":"            LOG.exception(_LE(\"The NFS snapshot %(cr)s does not exist.\"),"},{"line_number":726,"context_line":"                          {\u0027cr\u0027: new_path})"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_afe8747d","line":726,"range":{"start_line":725,"start_character":12,"end_line":726,"end_character":43},"updated":"2016-07-25 20:35:58.000000000","message":"I think this message should be related to the vol_path and not to the new_path, since this new_path will only exist if the \"mv\" command is successfully run.","commit_id":"ff10d9bf435080861763095bc30f087decd9841d"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"ca17dbf2efad5856c42d1417e1298eb1e0473b9f","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                         \"no longer being managed.\"), {\u0027cr\u0027: old_path})"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"        except (OSError, ValueError):"},{"line_number":725,"context_line":"            LOG.exception(_LE(\"The NFS snapshot %(cr)s does not exist.\"),"},{"line_number":726,"context_line":"                          {\u0027cr\u0027: new_path})"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_41e52436","line":726,"range":{"start_line":725,"start_character":12,"end_line":726,"end_character":43},"in_reply_to":"dada55a8_afe8747d","updated":"2016-07-27 12:18:08.000000000","message":"Done","commit_id":"ff10d9bf435080861763095bc30f087decd9841d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"f262fc30435ab8f91491fb6f68d311340d322193","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        # 172.24.49.34:/nfs_cinder"},{"line_number":658,"context_line":"        volume_path \u003d os.path.join(share.split(\u0027:\u0027)[1], volume_name)"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        return self.backend.check_snapshot_parent(volume_path, old_snap_name,"},{"line_number":661,"context_line":"                                                  fs_label)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def manage_existing_snapshot(self, snapshot, existing_ref):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_aa260814","line":660,"range":{"start_line":660,"start_character":50,"end_line":660,"end_character":61},"updated":"2016-08-26 13:36:21.000000000","message":"Just noticed it now, you should use the export_path retrieved from the BE. Which will point to the real path used in HNAS.","commit_id":"1d51215fa714229ee5d41ce92493116048b0b4ca"}]}
