)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"7ce7a886162131cf073d3acc43413206f8ee733b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yuriy Nesenenko \u003cynesenenko@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-24 13:32:58 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement blueprint: check-volume-exists"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Create the method check_volume_exists to check if a volume exists on"},{"line_number":10,"context_line":"the storage backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bab921fb_6c9d4a65","line":7,"updated":"2015-04-27 04:46:36.000000000","message":"Please change the style of your commit message.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"2099f669fc7835e070de0b479af0f1672ae13e8b"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"e7d6501b78fc2b056d1307532375ea000fa7db8b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"check_volume_exists in the LVM driver and add a similar method in RBD driver"},{"line_number":13,"context_line":"to check if a volume exists on the storage backend."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint check-volume-exists"},{"line_number":16,"context_line":"Change-Id: Ice8a14d626ed3d8e3790f95c3c5055ef4bacdb30"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a016987_21b86a74","line":15,"updated":"2015-05-22 13:12:49.000000000","message":"I think this patch should be a \"Partial-Implements\".","commit_id":"881cd8b5a5e6003d00e58a3b9dcf8c20aafa4594"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"b097942f3ace79f5e99b0c599f89220cbaaea937","unresolved":false,"context_lines":[{"line_number":10,"context_line":"volume again. To make it more reliable volume drivers should check if backend"},{"line_number":11,"context_line":"already created a volume. We rename the method _volume_not_present to"},{"line_number":12,"context_line":"check_volume_exists in the LVM driver and add a similar method in RBD driver"},{"line_number":13,"context_line":"to check if a volume exists on the storage backend."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Implements: blueprint check-volume-exists"},{"line_number":16,"context_line":"Change-Id: Ice8a14d626ed3d8e3790f95c3c5055ef4bacdb30"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a016987_6982c8c9","line":13,"updated":"2015-05-22 15:26:36.000000000","message":"This commit message could still be much more explicit.\n\nI suggest something like the following in place of the last sentence.\n\n\"The LVM driver and some of the nfs drivers already contain private _volume_not_present methods, so in this commit we rename these and expose them as public check_volume_exists methods and add a similar method for the RBD driver to check if a volume exists on the storage backend.  This commit also adds an ExistingVD ABC for drivers that implment the check_volume_exists method.\"","commit_id":"2abc2364b7448ca7c4c905b91201829f9b5bcd9d"}],"cinder/tests/unit/test_rbd.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"bb3c54a077c49557578206407a6672e8eb04a0c1","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def test_check_volume_no_exists(self):"},{"line_number":184,"context_line":"        self.mock_rbd.Image.side_effect \u003d self.mock_rbd.ImageNotFound"},{"line_number":185,"context_line":"        self.assertFalse(self.driver.check_volume_exists(self.volume))"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    @common_mocks"},{"line_number":188,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":189,"context_line":"        with mock.patch.object(self.driver.rbd.Image(), \u0027size\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_e2da4d16","line":186,"updated":"2015-05-22 17:23:03.000000000","message":"Why is this RBD specific?","commit_id":"7e489108b57743fb6988e622e6050a9aab3e716b"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"fbd87460446736f10fd4584231a278e643df3a32","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertTrue(self.driver.check_volume_exists(self.volume))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @common_mocks"},{"line_number":183,"context_line":"    def test_check_volume_no_exists(self):"},{"line_number":184,"context_line":"        self.mock_rbd.Image.side_effect \u003d self.mock_rbd.ImageNotFound"},{"line_number":185,"context_line":"        self.assertFalse(self.driver.check_volume_exists(self.volume))"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_4216194d","line":183,"updated":"2015-07-01 18:44:34.000000000","message":"bad name no_exists. Change no_exists-\u003edoesnot_exist","commit_id":"2ef65e1ba4a93f944d1afd4b36457080a03a063e"}],"cinder/volume/driver.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"e7d6501b78fc2b056d1307532375ea000fa7db8b","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1033,"context_line":"class ExistingVD(object):"},{"line_number":1034,"context_line":"    @abc.abstractmethod"},{"line_number":1035,"context_line":"    def check_volume_exists(self, volume_name):"},{"line_number":1036,"context_line":"        \"\"\"Checks if the volume exists."},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        :param volume_name: Cinder volume name to check if it exists."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_a148dab3","line":1035,"updated":"2015-05-22 13:12:49.000000000","message":"Would you explain why \"volume_name\" rather than \"volume\" or \"volume_id\". Compared with other base classes here seldom do they use \"volume_name\" as pass in parameter. BTW name may duplicate.","commit_id":"881cd8b5a5e6003d00e58a3b9dcf8c20aafa4594"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"8c83b68269211e4d266f8b7739dc811c293d13a7","unresolved":false,"context_lines":[{"line_number":1192,"context_line":""},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"class VolumeDriver(ConsistencyGroupVD, TransferVD, ManageableVD, ExtendVD,"},{"line_number":1195,"context_line":"                   CloneableVD, CloneableImageVD, SnapshotVD, ReplicaVD,"},{"line_number":1196,"context_line":"                   RetypeVD, LocalVD, MigrateVD, BaseVD):"},{"line_number":1197,"context_line":"    \"\"\"This class will be deprecated soon. Please us the abstract classes"},{"line_number":1198,"context_line":"       above for new drivers."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1a15b89a","line":1195,"updated":"2015-05-25 09:37:24.000000000","message":"Should the ExistingVD be added here?","commit_id":"7e489108b57743fb6988e622e6050a9aab3e716b"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"a8f031afd56a4b397ead306221fe6690adb25cd4","unresolved":false,"context_lines":[{"line_number":1192,"context_line":""},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"class VolumeDriver(ConsistencyGroupVD, TransferVD, ManageableVD, ExtendVD,"},{"line_number":1195,"context_line":"                   CloneableVD, CloneableImageVD, SnapshotVD, ReplicaVD,"},{"line_number":1196,"context_line":"                   RetypeVD, LocalVD, MigrateVD, BaseVD):"},{"line_number":1197,"context_line":"    \"\"\"This class will be deprecated soon. Please us the abstract classes"},{"line_number":1198,"context_line":"       above for new drivers."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_8d6bb0b6","line":1195,"in_reply_to":"7a016987_1a15b89a","updated":"2015-05-25 09:48:13.000000000","message":"Yes. Thanks.","commit_id":"7e489108b57743fb6988e622e6050a9aab3e716b"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c408d07e12dea93a9648a750b8b84d3d61a40dbd","unresolved":false,"context_lines":[{"line_number":1035,"context_line":"    def check_volume_exists(self, volume):"},{"line_number":1036,"context_line":"        \"\"\"Checks if the volume exists."},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        :param volume: Cinder volume to check if it exists."},{"line_number":1039,"context_line":"        \"\"\""},{"line_number":1040,"context_line":"        return"},{"line_number":1041,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_d4e98880","line":1038,"updated":"2015-05-29 13:38:19.000000000","message":"Based on LVMVolumeDriver implementation, this param is volume name which may not be enough for many backends to identify the volumes. Some backends could use volume ID to identify the volumes.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"}],"cinder/volume/drivers/hds/nfs.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"bb74b5781c4594d8b8ac91b7b0c688b2c6d41874","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    return hnas_backend.HnasBackend(drv_config)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class HDSNFSDriver(nfs.NfsDriver):"},{"line_number":148,"context_line":"    \"\"\"Base class for Hitachi NFS driver."},{"line_number":149,"context_line":"    Executes commands relating to Volumes."}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_0198a71a","line":146,"updated":"2015-05-25 13:26:43.000000000","message":"I think HDSNFSDriver doesn\u0027t have ExistingVD now.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"f2d82d2602fb1f211307b2df31b2c918eebdff04","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    return hnas_backend.HnasBackend(drv_config)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class HDSNFSDriver(nfs.NfsDriver):"},{"line_number":148,"context_line":"    \"\"\"Base class for Hitachi NFS driver."},{"line_number":149,"context_line":"    Executes commands relating to Volumes."}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_7c4ee43b","line":146,"in_reply_to":"7a016987_0198a71a","updated":"2015-05-25 13:38:19.000000000","message":"But this class definition has not yet been converted to ABC.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"bb74b5781c4594d8b8ac91b7b0c688b2c6d41874","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    \"\"\"Base class for Hitachi NFS driver."},{"line_number":149,"context_line":"    Executes commands relating to Volumes."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    Version 1.0.0: Initial driver version"},{"line_number":152,"context_line":"    Version 2.2.0:  Added support to SSH authentication"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_41e45faa","line":151,"updated":"2015-05-25 13:26:43.000000000","message":"Need to add a revision number?","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"}],"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":"ace7037db5d2c34eb5b78dd3ad3ebd19f0d07b86","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from cinder.volume import utils"},{"line_number":36,"context_line":"from cinder.volume import volume_types"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"HDS_HNAS_NFS_VERSION \u003d \u00273.0.1\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_51cd2564","line":38,"updated":"2015-07-03 15:29:13.000000000","message":"3.0.2 (x.y.z as z represents non-functional features)","commit_id":"2ef65e1ba4a93f944d1afd4b36457080a03a063e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ace7037db5d2c34eb5b78dd3ad3ebd19f0d07b86","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        nfs_mount \u003d self._get_provider_location(snapshot[\u0027volume_id\u0027])"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        if not self.check_volume_exists(nfs_mount, snapshot[\u0027name\u0027]):"},{"line_number":300,"context_line":"            return True"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        self._execute(\u0027rm\u0027, self._get_volume_path(nfs_mount, snapshot[\u0027name\u0027]),"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_f14f998f","line":299,"updated":"2015-07-03 15:29:13.000000000","message":"The delete_volume of the driver should also have this check.","commit_id":"2ef65e1ba4a93f944d1afd4b36457080a03a063e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ace7037db5d2c34eb5b78dd3ad3ebd19f0d07b86","unresolved":false,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        return self._get_provider_location(volume_id).split(\u0027:\u0027)[1]"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def check_volume_exists(self, nfs_mount, volume_name):"},{"line_number":344,"context_line":"        \"\"\"Check if volume exists."},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        :param volume_name: string volume name"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_91396df4","line":343,"updated":"2015-07-03 15:29:13.000000000","message":"It seems this is not the same function you declare in ExistingVD class. If you are using this only locally, _check_volume_exists() would be a better naming.","commit_id":"2ef65e1ba4a93f944d1afd4b36457080a03a063e"}],"cinder/volume/drivers/lvm.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"bb3c54a077c49557578206407a6672e8eb04a0c1","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        return \u0027%sg\u0027 % size_in_g"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def check_volume_exists(self, volume_name):"},{"line_number":105,"context_line":"        return self.vg.get_volume(volume_name) is not None"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _delete_volume(self, volume, is_snapshot\u003dFalse):"},{"line_number":108,"context_line":"        \"\"\"Deletes a logical volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_dd4a9654","line":105,"updated":"2015-05-22 17:23:03.000000000","message":"can you change \"not None\"?","commit_id":"7e489108b57743fb6988e622e6050a9aab3e716b"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"a8f031afd56a4b397ead306221fe6690adb25cd4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        return \u0027%sg\u0027 % size_in_g"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def check_volume_exists(self, volume_name):"},{"line_number":105,"context_line":"        return self.vg.get_volume(volume_name) is not None"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _delete_volume(self, volume, is_snapshot\u003dFalse):"},{"line_number":108,"context_line":"        \"\"\"Deletes a logical volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_ed522412","line":105,"in_reply_to":"7a016987_dd4a9654","updated":"2015-05-25 09:48:13.000000000","message":"vg.get_volume() returns None if the volume isn\u0027t present. So check_volume_exists returns True if the volume exists.","commit_id":"7e489108b57743fb6988e622e6050a9aab3e716b"}],"cinder/volume/drivers/netapp/dataontap/nfs_base.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"bb74b5781c4594d8b8ac91b7b0c688b2c6d41874","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class NetAppNfsDriver(nfs.NfsDriver):"},{"line_number":50,"context_line":"    \"\"\"Base class for NetApp NFS driver for Data ONTAP.\"\"\""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_218de3d2","line":48,"updated":"2015-05-25 13:26:43.000000000","message":"I think NetAppNfsDriver doesn\u0027t have ExistingVD now.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"f2d82d2602fb1f211307b2df31b2c918eebdff04","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class NetAppNfsDriver(nfs.NfsDriver):"},{"line_number":50,"context_line":"    \"\"\"Base class for NetApp NFS driver for Data ONTAP.\"\"\""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_9ccbe0a3","line":48,"in_reply_to":"7a016987_218de3d2","updated":"2015-05-25 13:38:19.000000000","message":"NetAppNfsDriver has not yet been converted to ABC so for now this class definition should remain unchanged.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ba6772a4fcde8e4bbd758a677bbebc99c97c96f5","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":259,"context_line":"        return int(features)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class RBDDriver(driver.RetypeVD, driver.TransferVD, driver.ExtendVD,"},{"line_number":263,"context_line":"                driver.CloneableVD, driver.CloneableImageVD, driver.SnapshotVD,"},{"line_number":264,"context_line":"                driver.BaseVD):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_5e199178","line":261,"updated":"2015-05-13 11:35:40.000000000","message":"Need to add ExistingVD, no?","commit_id":"90f5e1daef95d74e75d15b45acd4015b101ed77b"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"23836a0449e6b82e28c9474a5369a15d7dca4fb2","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            try:"},{"line_number":428,"context_line":"                rbd_image \u003d self.rbd.Image(client.ioctx, volume_name)"},{"line_number":429,"context_line":"                if rbd_image:"},{"line_number":430,"context_line":"                    return True"},{"line_number":431,"context_line":"            except self.rbd.ImageNotFound:"},{"line_number":432,"context_line":"                LOG.info(_LI(\"Volume %s does not exist in the backend\"),"},{"line_number":433,"context_line":"                         volume_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_15f2dc6f","line":430,"updated":"2015-05-13 11:07:06.000000000","message":"What do you return if the condition is False?\n\nIf the condition *cannot* be False because an exception will have been raised, then remove the \u0027if rbd_image\u0027 test since it is confusing.","commit_id":"90f5e1daef95d74e75d15b45acd4015b101ed77b"}],"cinder/volume/drivers/srb.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"bb3c54a077c49557578206407a6672e8eb04a0c1","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    def check_volume_exists(vg, volume_name):"},{"line_number":486,"context_line":"        # Used to avoid failing to delete a volume for which"},{"line_number":487,"context_line":"        # the create operation partly failed"},{"line_number":488,"context_line":"        return vg.get_volume(volume_name) is not None"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def _create_file(self, volume):"},{"line_number":491,"context_line":"        message \u003d _(\u0027Could not create volume on any configured REST server.\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5df22607","line":488,"updated":"2015-05-22 17:23:03.000000000","message":"dislike not None.","commit_id":"7e489108b57743fb6988e622e6050a9aab3e716b"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"bb74b5781c4594d8b8ac91b7b0c688b2c6d41874","unresolved":false,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        yield vg"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"class SRBDriver(driver.VolumeDriver):"},{"line_number":317,"context_line":"    \"\"\"Scality SRB volume driver"},{"line_number":318,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_4180df8a","line":315,"updated":"2015-05-25 13:26:43.000000000","message":"I think SRBDriver doesn\u0027t have ExistingVD now.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"f2d82d2602fb1f211307b2df31b2c918eebdff04","unresolved":false,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        yield vg"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"class SRBDriver(driver.VolumeDriver):"},{"line_number":317,"context_line":"    \"\"\"Scality SRB volume driver"},{"line_number":318,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_dc6398af","line":315,"in_reply_to":"7a016987_4180df8a","updated":"2015-05-25 13:38:19.000000000","message":"SRBDriver hasn\u0027t been converted to ABC yet.","commit_id":"7a392165a0c262e91146da5bd79e8309036c6f32"}]}
