)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fcec510d60f9050edb65b918134efe3dbb988427","unresolved":false,"context_lines":[{"line_number":9,"context_line":"* Manage existing volume"},{"line_number":10,"context_line":"* Get size of volume to be managed"},{"line_number":11,"context_line":"* Unmanage volume"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I87c1213f9b9413cb7a0d95f4a75ffd9165baf1b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3afb71cf_1a9b62cb","line":12,"updated":"2015-06-05 02:38:38.000000000","message":"Could you add the link to a related BP or bug?","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"909ef5ac914bf4332b7f586879518325fcf785a3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"* Manage existing volume"},{"line_number":10,"context_line":"* Get size of volume to be managed"},{"line_number":11,"context_line":"* Unmanage volume"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I87c1213f9b9413cb7a0d95f4a75ffd9165baf1b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3afb71cf_f02f85f4","line":12,"in_reply_to":"3afb71cf_1a9b62cb","updated":"2015-06-05 04:47:28.000000000","message":"If a bug is required, I will create one for this. But I see many reviews without bp or bug, especially for improvements, e.g. https://review.openstack.org/#/c/186963/ (Use SolidFire snapshots for Cinder snapshots), https://review.openstack.org/#/c/187233/ (Return provider_id in SolidFire model update).","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"}],"cinder/tests/unit/test_tintri.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fe04dad2c7684a0c0f374bbb4490373198ecec85","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_unmanage(self):"},{"line_number":239,"context_line":"        volume \u003d fake_volume.fake_volume_obj(self.context)"},{"line_number":240,"context_line":"        volume.provider_location \u003d self._provider_location"},{"line_number":241,"context_line":"        self._driver.unmanage(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_90228a00","line":240,"updated":"2015-06-11 20:45:21.000000000","message":"Looks like this test doesn\u0027t make sense","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"8f7a6050a1ac6e84b156a2912aeb704b81dc282d","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_unmanage(self):"},{"line_number":239,"context_line":"        volume \u003d fake_volume.fake_volume_obj(self.context)"},{"line_number":240,"context_line":"        volume.provider_location \u003d self._provider_location"},{"line_number":241,"context_line":"        self._driver.unmanage(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_9dc74264","line":240,"in_reply_to":"3afb71cf_90228a00","updated":"2015-06-11 21:04:24.000000000","message":"Unmanage doesn\u0027t delete the underlying backend storage object, only a log entry is made. So this test is only for interface completeness.","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"}],"cinder/volume/drivers/tintri.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"5073a8f53af0f1f28c1d8a1e68fa1d59227fa83e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003dNone,"},{"line_number":53,"context_line":"               help\u003d\u0027Password for the storage system\u0027,"},{"line_number":54,"context_line":"               secret\u003dTrue),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027tintri_api_version\u0027,"},{"line_number":56,"context_line":"               default\u003ddefault_api_version,"},{"line_number":57,"context_line":"               help\u003d\u0027API version for the storage system\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_8b2c954b","line":55,"updated":"2015-06-05 14:33:30.000000000","message":"There is DocImpact, please update your commit message.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"bf84623a6162a17dd77a0db43450096d516bf822","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003dNone,"},{"line_number":53,"context_line":"               help\u003d\u0027Password for the storage system\u0027,"},{"line_number":54,"context_line":"               secret\u003dTrue),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027tintri_api_version\u0027,"},{"line_number":56,"context_line":"               default\u003ddefault_api_version,"},{"line_number":57,"context_line":"               help\u003d\u0027API version for the storage system\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_a2740e9c","line":55,"in_reply_to":"3afb71cf_8b2c954b","updated":"2015-06-05 16:30:29.000000000","message":"Done","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"137cb99ef5b798cac7b323d06bd02d53f04c5c2e","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            source \u003d os.path.join(source_path, source_file)"},{"line_number":189,"context_line":"            target \u003d os.path.join(local_path, clone_name)"},{"line_number":190,"context_line":"            moved \u003d self._move_file(source, target)"},{"line_number":191,"context_line":"            self._execute(\u0027rm\u0027, \u0027-rf\u0027, source_path,"},{"line_number":192,"context_line":"                          run_as_root\u003dself._execute_as_root)"},{"line_number":193,"context_line":"            if not moved:"},{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_0431cb0b","line":191,"updated":"2015-06-05 02:00:10.000000000","message":"If move is successful, is these anything left to \"rm -rf\"?","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"fa3836d6be71afc93f9f6dffba8672d5850998af","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            source \u003d os.path.join(source_path, source_file)"},{"line_number":189,"context_line":"            target \u003d os.path.join(local_path, clone_name)"},{"line_number":190,"context_line":"            moved \u003d self._move_file(source, target)"},{"line_number":191,"context_line":"            self._execute(\u0027rm\u0027, \u0027-rf\u0027, source_path,"},{"line_number":192,"context_line":"                          run_as_root\u003dself._execute_as_root)"},{"line_number":193,"context_line":"            if not moved:"},{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_703cb52f","line":191,"in_reply_to":"3afb71cf_0431cb0b","updated":"2015-06-05 04:51:16.000000000","message":"It needs to remove the empty directory created by cloning volume.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"137cb99ef5b798cac7b323d06bd02d53f04c5c2e","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        nfs_share, nfs_mount, volume_name \u003d self._get_share_mount(existing_ref)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        LOG.debug(\u0027Managing volume %(vol)s with ref %(ref)s\u0027,"},{"line_number":636,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027ref\u0027: existing_ref})"},{"line_number":637,"context_line":"        if volume_name !\u003d volume[\u0027name\u0027]:"},{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_df813cfd","line":635,"updated":"2015-06-05 02:00:10.000000000","message":"Maybe move this debug log after the operation is successful without errors.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"fa3836d6be71afc93f9f6dffba8672d5850998af","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        nfs_share, nfs_mount, volume_name \u003d self._get_share_mount(existing_ref)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        LOG.debug(\u0027Managing volume %(vol)s with ref %(ref)s\u0027,"},{"line_number":636,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027ref\u0027: existing_ref})"},{"line_number":637,"context_line":"        if volume_name !\u003d volume[\u0027name\u0027]:"},{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_70239506","line":635,"in_reply_to":"3afb71cf_df813cfd","updated":"2015-06-05 04:51:16.000000000","message":"This is to report the attempt, then below LOG.debug(\u0027Manage volume %s\u0027, volume[\u0027name\u0027]) reports the result, I will likely move that down to always log.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"5073a8f53af0f1f28c1d8a1e68fa1d59227fa83e","unresolved":false,"context_lines":[{"line_number":637,"context_line":"        if volume_name !\u003d volume[\u0027name\u0027]:"},{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":639,"context_line":"            dst \u003d os.path.join(nfs_mount, volume[\u0027name\u0027])"},{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                raise exception.VolumeDriverException(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_ab1d11bf","line":640,"updated":"2015-06-05 14:33:30.000000000","message":"Can you add a unit test to cover this case?","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"bf84623a6162a17dd77a0db43450096d516bf822","unresolved":false,"context_lines":[{"line_number":637,"context_line":"        if volume_name !\u003d volume[\u0027name\u0027]:"},{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":639,"context_line":"            dst \u003d os.path.join(nfs_mount, volume[\u0027name\u0027])"},{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                raise exception.VolumeDriverException(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_a25e4ee7","line":640,"in_reply_to":"3afb71cf_ab1d11bf","updated":"2015-06-05 16:30:29.000000000","message":"Done","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"5073a8f53af0f1f28c1d8a1e68fa1d59227fa83e","unresolved":false,"context_lines":[{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":639,"context_line":"            dst \u003d os.path.join(nfs_mount, volume[\u0027name\u0027])"},{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":644,"context_line":"            LOG.debug(\u0027Manage volume %s\u0027, volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_6bbb99c5","line":641,"updated":"2015-06-05 14:33:30.000000000","message":"Please log this.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"327ed8dc0817cfaa3547daae174d153794a98c08","unresolved":false,"context_lines":[{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":639,"context_line":"            dst \u003d os.path.join(nfs_mount, volume[\u0027name\u0027])"},{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":644,"context_line":"            LOG.debug(\u0027Manage volume %s\u0027, volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_152305bf","line":641,"in_reply_to":"3afb71cf_6241760b","updated":"2015-06-06 22:00:19.000000000","message":"Exception messages are already logged in cinder volume log.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"bf84623a6162a17dd77a0db43450096d516bf822","unresolved":false,"context_lines":[{"line_number":638,"context_line":"            src \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":639,"context_line":"            dst \u003d os.path.join(nfs_mount, volume[\u0027name\u0027])"},{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":644,"context_line":"            LOG.debug(\u0027Manage volume %s\u0027, volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_6241760b","line":641,"in_reply_to":"3afb71cf_6bbb99c5","updated":"2015-06-05 16:30:29.000000000","message":"Done","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"137cb99ef5b798cac7b323d06bd02d53f04c5c2e","unresolved":false,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        try:"},{"line_number":660,"context_line":"            volume_path \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":661,"context_line":"            vol_size \u003d math.ceil(float(utils.get_file_size(volume_path)) /"},{"line_number":662,"context_line":"                                 units.Gi)"},{"line_number":663,"context_line":"        except Exception:"},{"line_number":664,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_7fa00891","line":661,"updated":"2015-06-05 02:00:10.000000000","message":"Is this a requirement?","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"fa3836d6be71afc93f9f6dffba8672d5850998af","unresolved":false,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        try:"},{"line_number":660,"context_line":"            volume_path \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":661,"context_line":"            vol_size \u003d math.ceil(float(utils.get_file_size(volume_path)) /"},{"line_number":662,"context_line":"                                 units.Gi)"},{"line_number":663,"context_line":"        except Exception:"},{"line_number":664,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_107901fd","line":661,"in_reply_to":"3afb71cf_7fa00891","updated":"2015-06-05 04:51:16.000000000","message":"Yeah, it needs to round up to the next GB.","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"5073a8f53af0f1f28c1d8a1e68fa1d59227fa83e","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            vol_size \u003d math.ceil(float(utils.get_file_size(volume_path)) /"},{"line_number":662,"context_line":"                                 units.Gi)"},{"line_number":663,"context_line":"        except Exception:"},{"line_number":664,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"},{"line_number":665,"context_line":"                   existing_ref[\u0027source-name\u0027])"},{"line_number":666,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":667,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_eb6ae919","line":664,"updated":"2015-06-05 14:33:30.000000000","message":"Can you add a unit test to cover this case?","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"bf84623a6162a17dd77a0db43450096d516bf822","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            vol_size \u003d math.ceil(float(utils.get_file_size(volume_path)) /"},{"line_number":662,"context_line":"                                 units.Gi)"},{"line_number":663,"context_line":"        except Exception:"},{"line_number":664,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"},{"line_number":665,"context_line":"                   existing_ref[\u0027source-name\u0027])"},{"line_number":666,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":667,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_625856fb","line":664,"in_reply_to":"3afb71cf_eb6ae919","updated":"2015-06-05 16:30:29.000000000","message":"Done","commit_id":"a443da51868338f1109024f1b2a6f0c7f41bad70"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                if retry \u003e 5:"},{"line_number":165,"context_line":"                    msg \u003d _(\u0027Failed to get snapshot for \u0027"},{"line_number":166,"context_line":"                            \u0027volume %s.\u0027) % volume_name"},{"line_number":167,"context_line":"                    raise exception.VolumeDriverException(msg)"},{"line_number":168,"context_line":"                time.sleep(1)"},{"line_number":169,"context_line":"                snapshot_id \u003d c.get_snapshot(volume_name)"},{"line_number":170,"context_line":"            c.clone_volume(snapshot_id, clone_path)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_55e29d04","line":167,"updated":"2015-06-06 20:31:36.000000000","message":"Let\u0027s log this error.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                if retry \u003e 5:"},{"line_number":165,"context_line":"                    msg \u003d _(\u0027Failed to get snapshot for \u0027"},{"line_number":166,"context_line":"                            \u0027volume %s.\u0027) % volume_name"},{"line_number":167,"context_line":"                    raise exception.VolumeDriverException(msg)"},{"line_number":168,"context_line":"                time.sleep(1)"},{"line_number":169,"context_line":"                snapshot_id \u003d c.get_snapshot(volume_name)"},{"line_number":170,"context_line":"            c.clone_volume(snapshot_id, clone_path)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_b531d10d","line":167,"in_reply_to":"3afb71cf_55e29d04","updated":"2015-06-06 22:00:28.000000000","message":"Exception messages are already logged in cinder volume log.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            self._execute(\u0027rm\u0027, \u0027-rf\u0027, source_path,"},{"line_number":192,"context_line":"                          run_as_root\u003dself._execute_as_root)"},{"line_number":193,"context_line":"            if not moved:"},{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"},{"line_number":195,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":196,"context_line":"        else:"},{"line_number":197,"context_line":"            raise exception.VolumeDriverException("}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_f5f189ce","line":194,"updated":"2015-06-06 20:31:36.000000000","message":"Logging would help in debugging.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            self._execute(\u0027rm\u0027, \u0027-rf\u0027, source_path,"},{"line_number":192,"context_line":"                          run_as_root\u003dself._execute_as_root)"},{"line_number":193,"context_line":"            if not moved:"},{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"},{"line_number":195,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":196,"context_line":"        else:"},{"line_number":197,"context_line":"            raise exception.VolumeDriverException("}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_9536d501","line":194,"in_reply_to":"3afb71cf_f5f189ce","updated":"2015-06-06 22:00:28.000000000","message":"Ditto.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"},{"line_number":195,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":196,"context_line":"        else:"},{"line_number":197,"context_line":"            raise exception.VolumeDriverException("},{"line_number":198,"context_line":"                _(\u0027Volume %s not found.\u0027) % source_path)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _clone_volume_to_volume(self, volume_name, clone_name, volume_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_15e54508","line":197,"updated":"2015-06-06 20:31:36.000000000","message":"Logging would help in debugging.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"},{"line_number":195,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":196,"context_line":"        else:"},{"line_number":197,"context_line":"            raise exception.VolumeDriverException("},{"line_number":198,"context_line":"                _(\u0027Volume %s not found.\u0027) % source_path)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _clone_volume_to_volume(self, volume_name, clone_name, volume_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_753b59ec","line":197,"in_reply_to":"3afb71cf_15e54508","updated":"2015-06-06 22:00:28.000000000","message":"Ditto.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        _tot_size, tot_available, _tot_allocated \u003d self._get_capacity_info("},{"line_number":582,"context_line":"            share)"},{"line_number":583,"context_line":"        if tot_available \u003c size:"},{"line_number":584,"context_line":"            msg \u003d _(\u0027Container size smaller than required file size.\u0027)"},{"line_number":585,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    def _get_export_ip_path(self, volume_id\u003dNone, share\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_d5ee8deb","line":584,"updated":"2015-06-06 20:31:36.000000000","message":"Let\u0027s log this message as well.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        _tot_size, tot_available, _tot_allocated \u003d self._get_capacity_info("},{"line_number":582,"context_line":"            share)"},{"line_number":583,"context_line":"        if tot_available \u003c size:"},{"line_number":584,"context_line":"            msg \u003d _(\u0027Container size smaller than required file size.\u0027)"},{"line_number":585,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    def _get_export_ip_path(self, volume_id\u003dNone, share\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_352601cf","line":584,"in_reply_to":"3afb71cf_d5ee8deb","updated":"2015-06-06 22:00:28.000000000","message":"Ditto.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                LOG.debug(msg)"},{"line_number":644,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":645,"context_line":"            self._set_rw_permissions(dst)"},{"line_number":646,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_953135a5","line":643,"updated":"2015-06-06 20:31:36.000000000","message":"Make it a LOG.error","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":640,"context_line":"            if not self._move_file(src, dst):"},{"line_number":641,"context_line":"                msg \u003d (_(\u0027Failed to manage volume %s.\u0027) %"},{"line_number":642,"context_line":"                       existing_ref[\u0027source-name\u0027])"},{"line_number":643,"context_line":"                LOG.debug(msg)"},{"line_number":644,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":645,"context_line":"            self._set_rw_permissions(dst)"},{"line_number":646,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_f52f499f","line":643,"in_reply_to":"3afb71cf_953135a5","updated":"2015-06-06 22:00:28.000000000","message":"Ditto.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":664,"context_line":"                                 units.Gi)"},{"line_number":665,"context_line":"        except Exception:"},{"line_number":666,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"},{"line_number":667,"context_line":"                   existing_ref[\u0027source-name\u0027])"},{"line_number":668,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        return vol_size"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_7526b969","line":667,"updated":"2015-06-06 20:31:36.000000000","message":"Consider logging the execption message","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":664,"context_line":"                                 units.Gi)"},{"line_number":665,"context_line":"        except Exception:"},{"line_number":666,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"},{"line_number":667,"context_line":"                   existing_ref[\u0027source-name\u0027])"},{"line_number":668,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        return vol_size"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_b518b185","line":667,"in_reply_to":"3afb71cf_7526b969","updated":"2015-06-06 22:00:28.000000000","message":"Ditto.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"aa2f1c8d40a170cd115ab2faecdd3fc3d274198c","unresolved":false,"context_lines":[{"line_number":708,"context_line":"                              {\u0027path\u0027: volume_path, \u0027share\u0027: nfs_share})"},{"line_number":709,"context_line":"                    return nfs_share, nfs_mount, volume_name"},{"line_number":710,"context_line":"                else:"},{"line_number":711,"context_line":"                    LOG.debug(\u0027Volume ref %(ref)s not on share %(share)s.\u0027,"},{"line_number":712,"context_line":"                              {\u0027ref\u0027: vol_ref, \u0027share\u0027: nfs_share})"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_b52c314b","line":711,"updated":"2015-06-06 20:31:36.000000000","message":"It\u0027s a warning or an error","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"dde4181f8dc4014ed7da45f237642095be0ccf56","unresolved":false,"context_lines":[{"line_number":708,"context_line":"                              {\u0027path\u0027: volume_path, \u0027share\u0027: nfs_share})"},{"line_number":709,"context_line":"                    return nfs_share, nfs_mount, volume_name"},{"line_number":710,"context_line":"                else:"},{"line_number":711,"context_line":"                    LOG.debug(\u0027Volume ref %(ref)s not on share %(share)s.\u0027,"},{"line_number":712,"context_line":"                              {\u0027ref\u0027: vol_ref, \u0027share\u0027: nfs_share})"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_75123964","line":711,"in_reply_to":"3afb71cf_b52c314b","updated":"2015-06-06 22:00:28.000000000","message":"Exception message with vol_ref below will be logged as error.","commit_id":"36f9db326d9a27de9ebd40ab91ca6081e74bf6a5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"1cef6d6aed810fac22e2167fdd01f990ca250e1f","unresolved":false,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"class TClient(object):"},{"line_number":718,"context_line":"    \"\"\"REST client for Tintri\"\"\""},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def __init__(self, hostname, username, password,"},{"line_number":721,"context_line":"                 api_version\u003ddefault_api_version):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_1251d40e","line":718,"updated":"2015-06-07 14:04:28.000000000","message":"Please add a \u0027.\u0027 at the end like you do in class TintriDrive:\n\"\"\"REST client for Tintri\"\"\" -\u003e \"\"\"REST client for Tintri.\"\"\"","commit_id":"31e6961b5de70e71556393415c501aad8b523335"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7da8bc97bebadabaf5f406c32283a4b471c3a4b6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               default\u003dNone,"},{"line_number":47,"context_line":"               help\u003d\u0027The hostname (or IP address) for the storage system\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027tintri_server_username\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027User name for the storage system\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027tintri_server_password\u0027,"},{"line_number":52,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_9b1cbf14","line":49,"updated":"2015-06-07 20:17:49.000000000","message":"This change doesn\u0027t appear to be related to what is stated in the commit message.\n\nSeems minor enough, so I won\u0027t downvote on it. But if you do another update, please add a note to the commit message that this change is also being implemented.","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"c5ff8d8f599d082468ca5b10667afab6792dd032","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               default\u003dNone,"},{"line_number":47,"context_line":"               help\u003d\u0027The hostname (or IP address) for the storage system\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027tintri_server_username\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027User name for the storage system\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027tintri_server_password\u0027,"},{"line_number":52,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_dbeb5777","line":49,"in_reply_to":"3afb71cf_9b1cbf14","updated":"2015-06-07 21:52:41.000000000","message":"Done","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7da8bc97bebadabaf5f406c32283a4b471c3a4b6","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003dNone,"},{"line_number":53,"context_line":"               help\u003d\u0027Password for the storage system\u0027,"},{"line_number":54,"context_line":"               secret\u003dTrue),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027tintri_api_version\u0027,"},{"line_number":56,"context_line":"               default\u003ddefault_api_version,"},{"line_number":57,"context_line":"               help\u003d\u0027API version for the storage system\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_7bc90378","line":55,"updated":"2015-06-07 20:17:49.000000000","message":"This should be mentioned in the commit too.","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"c5ff8d8f599d082468ca5b10667afab6792dd032","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003dNone,"},{"line_number":53,"context_line":"               help\u003d\u0027Password for the storage system\u0027,"},{"line_number":54,"context_line":"               secret\u003dTrue),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027tintri_api_version\u0027,"},{"line_number":56,"context_line":"               default\u003ddefault_api_version,"},{"line_number":57,"context_line":"               help\u003d\u0027API version for the storage system\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_fbe8537e","line":55,"in_reply_to":"3afb71cf_7bc90378","updated":"2015-06-07 21:52:41.000000000","message":"Done","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7da8bc97bebadabaf5f406c32283a4b471c3a4b6","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            source \u003d os.path.join(source_path, source_file)"},{"line_number":189,"context_line":"            target \u003d os.path.join(local_path, clone_name)"},{"line_number":190,"context_line":"            moved \u003d self._move_file(source, target)"},{"line_number":191,"context_line":"            self._execute(\u0027rm\u0027, \u0027-rf\u0027, source_path,"},{"line_number":192,"context_line":"                          run_as_root\u003dself._execute_as_root)"},{"line_number":193,"context_line":"            if not moved:"},{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_bbe89be3","line":191,"updated":"2015-06-07 20:17:49.000000000","message":"Shouldn\u0027t this rm be moved until after the check if the move was successful? It failed to move but you are still deleting the source?\n\nWould it be better to just raise VolumeDriverException inside _move_file if that fails?","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"c5ff8d8f599d082468ca5b10667afab6792dd032","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            source \u003d os.path.join(source_path, source_file)"},{"line_number":189,"context_line":"            target \u003d os.path.join(local_path, clone_name)"},{"line_number":190,"context_line":"            moved \u003d self._move_file(source, target)"},{"line_number":191,"context_line":"            self._execute(\u0027rm\u0027, \u0027-rf\u0027, source_path,"},{"line_number":192,"context_line":"                          run_as_root\u003dself._execute_as_root)"},{"line_number":193,"context_line":"            if not moved:"},{"line_number":194,"context_line":"                msg \u003d (_(\u0027Failed to move volume %s.\u0027) % source)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_dba2374b","line":191,"in_reply_to":"3afb71cf_bbe89be3","updated":"2015-06-07 21:52:41.000000000","message":"If the cloned directory is present, it should be removed regardless _move_file succeeds or not. This is to make sure the cloned directory is cleaned up.","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"a8bea42f0632bf7ece6a0023e13a7558f1826a4a","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        return self._resolve_hostname(share_split[0]) + \u0027:\u0027 + share_split[1]"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"    def _get_share_mount(self, vol_ref):"},{"line_number":687,"context_line":"        \"\"\"Get the NFS share, NFS mount, and volume path from reference."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        :param vol_ref: Driver-specific information used to identify a volume"},{"line_number":690,"context_line":"        :return:        NFS Share, NFS mount, volume path"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_fb41730c","line":687,"updated":"2015-06-07 19:52:17.000000000","message":"nitpicky: extra [,] before \"and volume path ...\"","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"86cdd922d50a2c896e962016edee7366bbf0a972","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        return self._resolve_hostname(share_split[0]) + \u0027:\u0027 + share_split[1]"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"    def _get_share_mount(self, vol_ref):"},{"line_number":687,"context_line":"        \"\"\"Get the NFS share, NFS mount, and volume path from reference."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        :param vol_ref: Driver-specific information used to identify a volume"},{"line_number":690,"context_line":"        :return:        NFS Share, NFS mount, volume path"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_1bf20f70","line":687,"in_reply_to":"3afb71cf_7b0463bf","updated":"2015-06-07 21:41:15.000000000","message":"It\u0027s a style choice. I usually use it only to resolve the ambiguity created by \"apposition\"s. I didn\u0027t see any, hence the comment. thanks.","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7da8bc97bebadabaf5f406c32283a4b471c3a4b6","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        return self._resolve_hostname(share_split[0]) + \u0027:\u0027 + share_split[1]"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"    def _get_share_mount(self, vol_ref):"},{"line_number":687,"context_line":"        \"\"\"Get the NFS share, NFS mount, and volume path from reference."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        :param vol_ref: Driver-specific information used to identify a volume"},{"line_number":690,"context_line":"        :return:        NFS Share, NFS mount, volume path"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_7b0463bf","line":687,"in_reply_to":"3afb71cf_fb41730c","updated":"2015-06-07 20:17:49.000000000","message":"Actually, that is the correct usage of serial commas.\n\nhttp://en.wikipedia.org/wiki/Serial_comma","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7da8bc97bebadabaf5f406c32283a4b471c3a4b6","unresolved":false,"context_lines":[{"line_number":799,"context_line":"                   \u0027vmTintriUuid\u0027: volume_name,"},{"line_number":800,"context_line":"                   \u0027instanceId\u0027: volume_name,"},{"line_number":801,"context_line":"                   \u0027snapshotCreator\u0027: \u0027Cinder\u0027,"},{"line_number":802,"context_line":"                   \u0027deletionPolicy\u0027: deletion_policy"},{"line_number":803,"context_line":"                   }"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"        payload \u003d \u0027/\u0027 + self.api_version + \u0027/cinder/snapshot\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_9bca7f6d","line":802,"updated":"2015-06-07 20:17:49.000000000","message":"Please use a trailing comma.\n\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"c5ff8d8f599d082468ca5b10667afab6792dd032","unresolved":false,"context_lines":[{"line_number":799,"context_line":"                   \u0027vmTintriUuid\u0027: volume_name,"},{"line_number":800,"context_line":"                   \u0027instanceId\u0027: volume_name,"},{"line_number":801,"context_line":"                   \u0027snapshotCreator\u0027: \u0027Cinder\u0027,"},{"line_number":802,"context_line":"                   \u0027deletionPolicy\u0027: deletion_policy"},{"line_number":803,"context_line":"                   }"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"        payload \u003d \u0027/\u0027 + self.api_version + \u0027/cinder/snapshot\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_1b67af26","line":802,"in_reply_to":"3afb71cf_9bca7f6d","updated":"2015-06-07 21:52:41.000000000","message":"Done","commit_id":"20d8b51408489ded5ee1060360fa1811b8af844a"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d57aa201230315421b9f192e980d60efb5b767a0","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_9d735e15","line":230,"updated":"2015-06-09 05:03:05.000000000","message":"Looks like this is an unrelated change, either you should update your commit message or submit a new patch.","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"00207ab41a49453ce2f3462d9b34ff8152166920","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_3d725d4a","line":230,"in_reply_to":"1af86dd1_1642063f","updated":"2015-06-16 07:02:21.000000000","message":"Thanks Sean.","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"53ab17193700af182a32de0d7435cb52628ed412","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_1642063f","line":230,"in_reply_to":"1af86dd1_cdaf46e2","updated":"2015-06-12 17:13:18.000000000","message":"Filed https://bugs.launchpad.net/cinder/+bug/1464728 \u0027Cinder manage_existing should not require storage pools\u0027","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"4fac0b9772a4405610506b7b489ee5a987109d73","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_c50898dc","line":230,"in_reply_to":"3afb71cf_23f1cf95","updated":"2015-06-10 10:37:44.000000000","message":"Are you saying that if a backend doesn\u0027t support pools, manage_existing won\u0027t work?","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"13c5f5d4ad585190f3e4c8a603e47de12913dc6c","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_cdaf46e2","line":230,"in_reply_to":"3afb71cf_880bcc23","updated":"2015-06-12 15:05:57.000000000","message":"Pool support is optional. Can you file a bug?","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"997743ae176613fc331046690131a913e922858a","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_23f1cf95","line":230,"in_reply_to":"3afb71cf_9d735e15","updated":"2015-06-09 15:48:40.000000000","message":"manage_existing requires storage pools as the target is filtered and selected by host_name#pool_name. Would you please refresh your comment?","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"4db98a4e25a1b7edc6a236c0517f174802ef168a","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self._ensure_shares_mounted()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        pools \u003d []"},{"line_number":231,"context_line":"        for share in self._mounted_shares:"},{"line_number":232,"context_line":"            pool \u003d dict()"},{"line_number":233,"context_line":"            capacity, free, used \u003d self._get_capacity_info(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_880bcc23","line":230,"in_reply_to":"3afb71cf_c50898dc","updated":"2015-06-10 14:47:54.000000000","message":"Yes, otherwise host_passes_filters fails and raises NoValidHost.","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"d57aa201230315421b9f192e980d60efb5b767a0","unresolved":false,"context_lines":[{"line_number":643,"context_line":"                raise exception.VolumeDriverException(msg)"},{"line_number":644,"context_line":"            self._set_rw_permissions(dst)"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        LOG.debug(\u0027Manage volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":647,"context_line":"        return {\u0027provider_location\u0027: nfs_share}"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_ddc67648","line":646,"updated":"2015-06-09 05:03:05.000000000","message":"You have LOG.info for unmanage.","commit_id":"a548a695ad09282dde5a5c7cec758ae4c40b071f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"519618f71c3d38b12bf7c97744c8316904be3f7c","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":630,"context_line":"        :param existing_ref: Driver-specific information used to identify a"},{"line_number":631,"context_line":"        volume"},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        nfs_share, nfs_mount, volume_name \u003d self._get_share_mount(existing_ref)"},{"line_number":634,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_dc1efc5d","line":631,"updated":"2015-06-11 10:51:38.000000000","message":"If you end up doing another patch, please align line continuation with the previous description line (put \"volume\" under \"Driver-specific\").","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"8f7a6050a1ac6e84b156a2912aeb704b81dc282d","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":630,"context_line":"        :param existing_ref: Driver-specific information used to identify a"},{"line_number":631,"context_line":"        volume"},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        nfs_share, nfs_mount, volume_name \u003d self._get_share_mount(existing_ref)"},{"line_number":634,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_6bc3a339","line":631,"in_reply_to":"3afb71cf_dc1efc5d","updated":"2015-06-11 21:04:24.000000000","message":"Done","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"519618f71c3d38b12bf7c97744c8316904be3f7c","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":655,"context_line":"        :param existing_ref: Driver-specific information used to identify a"},{"line_number":656,"context_line":"        volume"},{"line_number":657,"context_line":"        \"\"\""},{"line_number":658,"context_line":"        nfs_share, nfs_mount, volume_name \u003d self._get_share_mount(existing_ref)"},{"line_number":659,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_3c2e308c","line":656,"updated":"2015-06-11 10:51:38.000000000","message":"Same.","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"8f7a6050a1ac6e84b156a2912aeb704b81dc282d","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":655,"context_line":"        :param existing_ref: Driver-specific information used to identify a"},{"line_number":656,"context_line":"        volume"},{"line_number":657,"context_line":"        \"\"\""},{"line_number":658,"context_line":"        nfs_share, nfs_mount, volume_name \u003d self._get_share_mount(existing_ref)"},{"line_number":659,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_0be1cfd0","line":656,"in_reply_to":"3afb71cf_3c2e308c","updated":"2015-06-11 21:04:24.000000000","message":"Done","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fe04dad2c7684a0c0f374bbb4490373198ecec85","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            volume_path \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":662,"context_line":"            vol_size \u003d math.ceil(float(utils.get_file_size(volume_path)) /"},{"line_number":663,"context_line":"                                 units.Gi)"},{"line_number":664,"context_line":"        except Exception:"},{"line_number":665,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"},{"line_number":666,"context_line":"                   existing_ref[\u0027source-name\u0027])"},{"line_number":667,"context_line":"            raise exception.VolumeDriverException(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_c53e06da","line":664,"updated":"2015-06-11 20:45:21.000000000","message":"Could we handle more specific exception here?","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"8f7a6050a1ac6e84b156a2912aeb704b81dc282d","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            volume_path \u003d os.path.join(nfs_mount, volume_name)"},{"line_number":662,"context_line":"            vol_size \u003d math.ceil(float(utils.get_file_size(volume_path)) /"},{"line_number":663,"context_line":"                                 units.Gi)"},{"line_number":664,"context_line":"        except Exception:"},{"line_number":665,"context_line":"            msg \u003d (_(\u0027Failed to get size of volume %s\u0027) %"},{"line_number":666,"context_line":"                   existing_ref[\u0027source-name\u0027])"},{"line_number":667,"context_line":"            raise exception.VolumeDriverException(msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_fd299638","line":664,"in_reply_to":"3afb71cf_c53e06da","updated":"2015-06-11 21:04:24.000000000","message":"Done","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fe04dad2c7684a0c0f374bbb4490373198ecec85","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                              {\u0027path\u0027: volume_path, \u0027share\u0027: nfs_share})"},{"line_number":708,"context_line":"                    return nfs_share, nfs_mount, volume_name"},{"line_number":709,"context_line":"                else:"},{"line_number":710,"context_line":"                    LOG.debug(\u0027Volume ref %(ref)s not on share %(share)s.\u0027,"},{"line_number":711,"context_line":"                              {\u0027ref\u0027: vol_ref, \u0027share\u0027: nfs_share})"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_909f2a50","line":710,"updated":"2015-06-11 20:45:21.000000000","message":"Should be \u0027Volume ref %(ref)s is not on share %(share)s.\u0027 or \u0027Volume ref %(ref)s doesn\u0027t found on share %(share)s.\u0027","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"7e219f98b5fe2e7e8326690f58b6aceda6d5317e","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                              {\u0027path\u0027: volume_path, \u0027share\u0027: nfs_share})"},{"line_number":708,"context_line":"                    return nfs_share, nfs_mount, volume_name"},{"line_number":709,"context_line":"                else:"},{"line_number":710,"context_line":"                    LOG.debug(\u0027Volume ref %(ref)s not on share %(share)s.\u0027,"},{"line_number":711,"context_line":"                              {\u0027ref\u0027: vol_ref, \u0027share\u0027: nfs_share})"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":8,"id":"1af86dd1_43c10680","line":710,"in_reply_to":"3afb71cf_909f2a50","updated":"2015-06-11 21:15:53.000000000","message":"\u0027File or Directory not found\u0027 is commonly used instead of \u0027File or Directory is not found\u0027.","commit_id":"b85ac79c75c605d1225474aa7ee09bcc39fdc4d7"}]}
