)]}'
{"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":17722,"name":"chenxing","username":"chenxing.openstack","inactive":true},"change_message_id":"5951b843361973f58427a3da260da0f926213674","unresolved":false,"context_lines":[{"line_number":4624,"context_line":""},{"line_number":4625,"context_line":"            # Exception case at delete_volume"},{"line_number":4626,"context_line":"            # source_volume[\u0027migration_status\u0027] is \u0027completing\u0027"},{"line_number":4627,"context_line":"            # Test the case for the local path is valid"},{"line_number":4628,"context_line":"            fake_path \u003d \u0027/dev/mapper/vol-id\u0027"},{"line_number":4629,"context_line":"            mock_create_volume.side_effect \u003d self._fake_create_volume"},{"line_number":4630,"context_line":"            mock_migrate_compl.side_effect \u003d fake_migrate_volume_completion"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_9a0c68ed","line":4627,"updated":"2015-11-27 03:41:32.000000000","message":"you should use \u0027local_path\u0027 instead \u0027local path\u0027,because in this case local_path is a variable.","commit_id":"7a483d6a894e0381c95c315285315262d78b0f0f"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"1af4d7989ce249cf2abe2a201a9144f465549fac","unresolved":false,"context_lines":[{"line_number":4624,"context_line":""},{"line_number":4625,"context_line":"            # Exception case at delete_volume"},{"line_number":4626,"context_line":"            # source_volume[\u0027migration_status\u0027] is \u0027completing\u0027"},{"line_number":4627,"context_line":"            # Test the case for the local path is valid"},{"line_number":4628,"context_line":"            fake_path \u003d \u0027/dev/mapper/vol-id\u0027"},{"line_number":4629,"context_line":"            mock_create_volume.side_effect \u003d self._fake_create_volume"},{"line_number":4630,"context_line":"            mock_migrate_compl.side_effect \u003d fake_migrate_volume_completion"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_faf4945b","line":4627,"in_reply_to":"9a8ffd7b_9a0c68ed","updated":"2015-11-27 04:10:21.000000000","message":"Done","commit_id":"7a483d6a894e0381c95c315285315262d78b0f0f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":4614,"context_line":"            mock_copy.assert_called_once_with(fake_path, \u0027bar\u0027, 0, \u00271M\u0027,"},{"line_number":4615,"context_line":"                                              sparse\u003dTrue)"},{"line_number":4616,"context_line":""},{"line_number":4617,"context_line":"            # Test the case for the method local_path is not valid"},{"line_number":4618,"context_line":"            local_path.reset_mock()"},{"line_number":4619,"context_line":"            mock_copy.reset_mock()"},{"line_number":4620,"context_line":"            mock_attach.side_effect \u003d [{\u0027device\u0027: {\u0027path\u0027: \u0027bar\u0027}},"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_6f02890d","line":4617,"updated":"2016-01-21 11:37:16.000000000","message":"-1: Each test should test only 1 test case, so this should go in another test.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":4633,"context_line":"            volume \u003d db.volume_get(context.get_admin_context(), volume[\u0027id\u0027])"},{"line_number":4634,"context_line":"            self.assertEqual(\u0027error\u0027, volume[\u0027migration_status\u0027])"},{"line_number":4635,"context_line":"            self.assertEqual(\u0027available\u0027, volume[\u0027status\u0027])"},{"line_number":4636,"context_line":"            mock_copy.assert_called_once_with(\u0027foo\u0027, \u0027bar\u0027, 0, \u00271M\u0027,"},{"line_number":4637,"context_line":"                                              sparse\u003dTrue)"},{"line_number":4638,"context_line":""},{"line_number":4639,"context_line":"    def fake_attach_volume(self, ctxt, volume, instance_uuid, host_name,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_f27f3e64","line":4636,"updated":"2016-01-21 11:37:16.000000000","message":"-1: We should check that mock_attach has been called twice.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":6634,"context_line":"        mock_copy.assert_called_with(\u0027foo\u0027, \u0027bar\u0027, 1024, \u00271M\u0027, sparse\u003dTrue)"},{"line_number":6635,"context_line":"        self.assertEqual(detach_expected, mock_detach.mock_calls)"},{"line_number":6636,"context_line":""},{"line_number":6637,"context_line":"        fake_local_path \u003d \u0027/dev/mapper/vol-id\u0027"},{"line_number":6638,"context_line":"        mock_attach.reset_mock()"},{"line_number":6639,"context_line":"        mock_detach.reset_mock()"},{"line_number":6640,"context_line":"        mock_attach.side_effect \u003d attach_volume_returns"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_92de026c","line":6637,"updated":"2016-01-21 11:37:16.000000000","message":"-1: Same as above, this should go in another tests.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":6642,"context_line":"        with mock.patch.object(self.volume.driver,"},{"line_number":6643,"context_line":"                               \u0027local_path\u0027) as local_path,\\"},{"line_number":6644,"context_line":"                mock.patch.object(os.path, \u0027exists\u0027) as valid_path:"},{"line_number":6645,"context_line":"            #  Test case for driver.local_path is a invalid path."},{"line_number":6646,"context_line":"            local_path.return_value \u003d fake_local_path"},{"line_number":6647,"context_line":"            valid_path.return_value \u003d False"},{"line_number":6648,"context_line":"            self.volume._copy_volume_data(self.context,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_72510ed8","line":6645,"updated":"2016-01-21 11:37:16.000000000","message":"nit: s/a/an","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":6654,"context_line":"                                         sparse\u003dFalse)"},{"line_number":6655,"context_line":"            self.assertEqual(detach_expected, mock_detach.mock_calls)"},{"line_number":6656,"context_line":""},{"line_number":6657,"context_line":"            #  Test case for driver.local_path is a valid path."},{"line_number":6658,"context_line":"            valid_path.return_value \u003d True"},{"line_number":6659,"context_line":"            mock_attach.reset_mock()"},{"line_number":6660,"context_line":"            mock_detach.reset_mock()"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_32e156d1","line":6657,"updated":"2016-01-21 11:37:16.000000000","message":"-1: Another test case, another test","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"}],"cinder/volume/driver.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"92d751d6e1b4be006ba75f00d6822ece80961ea4","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                     \u0027discard (aka. trim/unmap). This will not actually \u0027"},{"line_number":254,"context_line":"                     \u0027change the behavior of the backend or the client \u0027"},{"line_number":255,"context_line":"                     \u0027directly, it will only notify that it can be used.\u0027),"},{"line_number":256,"context_line":"    cfg.BoolOpt(\u0027sparse_copy_volume_data\u0027,"},{"line_number":257,"context_line":"                default\u003dFalse,"},{"line_number":258,"context_line":"                help\u003d\u0027Indicate whether the local_path method can be used to \u0027"},{"line_number":259,"context_line":"                     \u0027retrieve the volume data directly.\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a57f1b5_97d35d38","line":256,"updated":"2016-02-10 16:04:53.000000000","message":"This shouldn\u0027t be a config option, it should be a flag coded in the driver indicating whether the driver supports this functionality.  This is needed because local_path() now means different things in different drivers.\n\nAlso, \"sparse_copy_volume_data\" was an example of a flag, this functionality has no thing to do with sparse copies.","commit_id":"aa3375d53987e0797c7329cb4677ac2c35c54532"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2096062131275d64592c44dd8cd6d393d81bc196","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"    def local_path(self, volume):"},{"line_number":2051,"context_line":"        raise NotImplementedError()"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"    def get_direct_volume_path(self, volume_or_snapshot):"},{"line_number":2054,"context_line":"        raise NotImplementedError()"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":"    def clear_download(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":22,"id":"dae33548_62d1b9cd","line":2053,"updated":"2016-02-15 11:04:22.000000000","message":"-1: This needs a good docstring so drivers know what they have to implement.","commit_id":"87d55ba8d01cc7dcd3ebb8e236560eb6d3dccc2c"}],"cinder/volume/drivers/lvm.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2096062131275d64592c44dd8cd6d393d81bc196","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        escaped_name \u003d self._escape_snapshot(volume[\u0027name\u0027]).replace(\u0027-\u0027, \u0027--\u0027)"},{"line_number":452,"context_line":"        return \"/dev/mapper/%s-%s\" % (escaped_group, escaped_name)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    def get_direct_volume_path(self, volume_or_snapshot):"},{"line_number":455,"context_line":"        vg \u003d self.configuration.volume_group"},{"line_number":456,"context_line":"        escaped_group \u003d vg.replace(\u0027-\u0027, \u0027--\u0027)"},{"line_number":457,"context_line":"        escaped_name \u003d self._escape_snapshot("}],"source_content_type":"text/x-python","patch_set":22,"id":"dae33548_dd906898","line":454,"updated":"2016-02-15 11:04:22.000000000","message":"-1: This should return `self.local_path(volume_or_snapshot)`","commit_id":"87d55ba8d01cc7dcd3ebb8e236560eb6d3dccc2c"}],"cinder/volume/manager.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"634b110890af24e91eec17ef5a75b06667dbcfe8","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"        copy_error \u003d True"},{"line_number":1590,"context_line":"        try:"},{"line_number":1591,"context_line":"            size_in_mb \u003d int(src_vol[\u0027size\u0027]) * units.Ki    # vol size is in GB"},{"line_number":1592,"context_line":"            vol_utils.copy_volume(src_vol_path,"},{"line_number":1593,"context_line":"                                  dest_attach_info[\u0027device\u0027][\u0027path\u0027],"},{"line_number":1594,"context_line":"                                  size_in_mb,"},{"line_number":1595,"context_line":"                                  self.configuration.volume_dd_blocksize,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_8363d3db","line":1592,"updated":"2015-11-26 09:29:23.000000000","message":"There a question: if driver return the srv_vol_path, but actually, the src volume is not attached to host, right?  So, Could there work for copying volume data?","commit_id":"a046ea47c3e1df31700750e93bbb8bac3d34c0cf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"9d72973a3a5895621a28c380acb36872742ea800","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"        copy_error \u003d True"},{"line_number":1590,"context_line":"        try:"},{"line_number":1591,"context_line":"            size_in_mb \u003d int(src_vol[\u0027size\u0027]) * units.Ki    # vol size is in GB"},{"line_number":1592,"context_line":"            vol_utils.copy_volume(src_vol_path,"},{"line_number":1593,"context_line":"                                  dest_attach_info[\u0027device\u0027][\u0027path\u0027],"},{"line_number":1594,"context_line":"                                  size_in_mb,"},{"line_number":1595,"context_line":"                                  self.configuration.volume_dd_blocksize,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_e4c1de2f","line":1592,"in_reply_to":"9a8ffd7b_6837504d","updated":"2015-12-17 08:49:07.000000000","message":"Basically, that is right.\nAs far as I know, LVM, NFS can work this way, but for drivers like storiwize HP 3par, dell, emc, etc, no.","commit_id":"a046ea47c3e1df31700750e93bbb8bac3d34c0cf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"1ebfe27df44101552c438f081b405edc5aca85d7","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"        copy_error \u003d True"},{"line_number":1590,"context_line":"        try:"},{"line_number":1591,"context_line":"            size_in_mb \u003d int(src_vol[\u0027size\u0027]) * units.Ki    # vol size is in GB"},{"line_number":1592,"context_line":"            vol_utils.copy_volume(src_vol_path,"},{"line_number":1593,"context_line":"                                  dest_attach_info[\u0027device\u0027][\u0027path\u0027],"},{"line_number":1594,"context_line":"                                  size_in_mb,"},{"line_number":1595,"context_line":"                                  self.configuration.volume_dd_blocksize,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_840bb329","line":1592,"in_reply_to":"9a8ffd7b_8363d3db","updated":"2015-11-27 02:13:11.000000000","message":"There is no need to do the attach, because local_path has provided the local path of this source volume, which is accessible by the host directly. \n\nattach_volume is used to get the device path for the host to access it, but since the path can be provided through local_path, we can directly use it without doing the attach_volume.","commit_id":"a046ea47c3e1df31700750e93bbb8bac3d34c0cf"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"15569f2111d601691fcb25f59efc8df0f50ac132","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"        copy_error \u003d True"},{"line_number":1590,"context_line":"        try:"},{"line_number":1591,"context_line":"            size_in_mb \u003d int(src_vol[\u0027size\u0027]) * units.Ki    # vol size is in GB"},{"line_number":1592,"context_line":"            vol_utils.copy_volume(src_vol_path,"},{"line_number":1593,"context_line":"                                  dest_attach_info[\u0027device\u0027][\u0027path\u0027],"},{"line_number":1594,"context_line":"                                  size_in_mb,"},{"line_number":1595,"context_line":"                                  self.configuration.volume_dd_blocksize,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_6837504d","line":1592,"in_reply_to":"9a8ffd7b_840bb329","updated":"2015-12-15 09:16:40.000000000","message":"So this will work on local storage backend, like LVM, right?  But for other remote storage device, it will need to attach first, right?","commit_id":"a046ea47c3e1df31700750e93bbb8bac3d34c0cf"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":1571,"context_line":"    def _get_valid_local_path(self, volume_or_snapshot):"},{"line_number":1572,"context_line":"        try:"},{"line_number":1573,"context_line":"            # If the driver method local_path is supported and has a"},{"line_number":1574,"context_line":"            # valid path returned for the source volume or snapshot."},{"line_number":1575,"context_line":"            # There is not need to get the volume device path via"},{"line_number":1576,"context_line":"            # attaching."},{"line_number":1577,"context_line":"            src_path \u003d self.driver.local_path(volume_or_snapshot)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_0fbbcde6","line":1574,"updated":"2016-01-21 11:37:16.000000000","message":"nit: You have split the sentence with a . in the middle of the sentence.  This would benefit from a rephrasing for clarity.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"423a85fa141cc6d70018e8e46138f37c205321ee","unresolved":false,"context_lines":[{"line_number":1571,"context_line":"    def _get_valid_local_path(self, volume_or_snapshot):"},{"line_number":1572,"context_line":"        try:"},{"line_number":1573,"context_line":"            # If the driver method local_path is supported and has a"},{"line_number":1574,"context_line":"            # valid path returned for the source volume or snapshot."},{"line_number":1575,"context_line":"            # There is not need to get the volume device path via"},{"line_number":1576,"context_line":"            # attaching."},{"line_number":1577,"context_line":"            src_path \u003d self.driver.local_path(volume_or_snapshot)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_cddbcf4d","line":1574,"in_reply_to":"9a68dd71_0fbbcde6","updated":"2016-01-25 20:38:37.000000000","message":"Done","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":1592,"context_line":"                                               remote\u003ddest_remote)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"        src_vol_path \u003d self._get_valid_local_path(src_vol)"},{"line_number":1595,"context_line":"        attached_src_vol \u003d False"},{"line_number":1596,"context_line":"        if not src_vol_path:"},{"line_number":1597,"context_line":"            try:"},{"line_number":1598,"context_line":"                src_remote \u003d remote in [\u0027src\u0027, \u0027both\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_ef38b93f","line":1595,"updated":"2016-01-21 11:37:16.000000000","message":"nit: This could be changed to\n\n attached_src_vol \u003d src_vol_path is not None\n\nAnd then line 1608 can be removed.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"65c0356de1fd3014350b03339ac0eaa1c4e62b90","unresolved":false,"context_lines":[{"line_number":1592,"context_line":"                                               remote\u003ddest_remote)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"        src_vol_path \u003d self._get_valid_local_path(src_vol)"},{"line_number":1595,"context_line":"        attached_src_vol \u003d False"},{"line_number":1596,"context_line":"        if not src_vol_path:"},{"line_number":1597,"context_line":"            try:"},{"line_number":1598,"context_line":"                src_remote \u003d remote in [\u0027src\u0027, \u0027both\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_17129409","line":1595,"in_reply_to":"9a68dd71_06d76f24","updated":"2016-01-31 14:35:36.000000000","message":"I think it should be attached_src_vol \u003d src_vol_path is None.\nOtherwise, the test cases need to change all in an opposite way.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"92c685aa53c8718d75d5a53c6f4536d5ca0c2faa","unresolved":false,"context_lines":[{"line_number":1592,"context_line":"                                               remote\u003ddest_remote)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"        src_vol_path \u003d self._get_valid_local_path(src_vol)"},{"line_number":1595,"context_line":"        attached_src_vol \u003d False"},{"line_number":1596,"context_line":"        if not src_vol_path:"},{"line_number":1597,"context_line":"            try:"},{"line_number":1598,"context_line":"                src_remote \u003d remote in [\u0027src\u0027, \u0027both\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_06d76f24","line":1595,"in_reply_to":"9a68dd71_0d8b2720","updated":"2016-01-26 10:31:47.000000000","message":"I was careful enough with the suggestion, attached_src_vol will only be used if self._attach_volume doesn\u0027t raise an exception (if it raises it we reraise that exception) and src_attach_info has both \u0027device\u0027 and \u0027path\u0027 keys (if it doesn\u0027t it will raise an exception), so suggested code is fine.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"423a85fa141cc6d70018e8e46138f37c205321ee","unresolved":false,"context_lines":[{"line_number":1592,"context_line":"                                               remote\u003ddest_remote)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"        src_vol_path \u003d self._get_valid_local_path(src_vol)"},{"line_number":1595,"context_line":"        attached_src_vol \u003d False"},{"line_number":1596,"context_line":"        if not src_vol_path:"},{"line_number":1597,"context_line":"            try:"},{"line_number":1598,"context_line":"                src_remote \u003d remote in [\u0027src\u0027, \u0027both\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_0d8b2720","line":1595,"in_reply_to":"9a68dd71_ef38b93f","updated":"2016-01-25 20:38:37.000000000","message":"Be careful. I believe the original way should be kept.\nattached_src_vol cannot be finalized as True unless self._attach_volume has run successfully and return a good src attach information.\nI think the old way should be kept.","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2096062131275d64592c44dd8cd6d393d81bc196","unresolved":false,"context_lines":[{"line_number":1578,"context_line":""},{"line_number":1579,"context_line":"    def _get_direct_volume_path(self, volume_or_snapshot):"},{"line_number":1580,"context_line":"        stat \u003d self.driver.get_volume_stats()"},{"line_number":1581,"context_line":"        if stat and not stat.get(\u0027direct_data_access_support\u0027, False):"},{"line_number":1582,"context_line":"            return None"},{"line_number":1583,"context_line":"        try:"},{"line_number":1584,"context_line":"            # If the driver method local_path is supported and has a"}],"source_content_type":"text/x-python","patch_set":22,"id":"dae33548_42b915e9","line":1581,"updated":"2016-02-15 11:04:22.000000000","message":"nit: No need to set default value to False.","commit_id":"87d55ba8d01cc7dcd3ebb8e236560eb6d3dccc2c"}],"releasenotes/notes/optimization-with-local-path-0423aae081844f58.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"341c5108d3652f5314c8b4b3c74ec253187c8999","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Access the volumes via the local path without attaching them."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"9a68dd71_0f5f4de6","line":3,"updated":"2016-01-21 11:37:16.000000000","message":"-1: This should be rephrased as it doesn\u0027t indicate that this is done only when possible and only on migrations","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"423a85fa141cc6d70018e8e46138f37c205321ee","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Access the volumes via the local path without attaching them."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"9a68dd71_8d7f1714","line":3,"in_reply_to":"9a68dd71_0f5f4de6","updated":"2016-01-25 20:38:37.000000000","message":"Done","commit_id":"debf527b4623c2760ccbb983d031f7ea062b83f9"}]}
