)]}'
{"cinder/api/v2/volumes.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"b3e7db459eafec16c8f6b8d5fb6cb1339e027721","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        size \u003d volume.get(\u0027size\u0027, None)"},{"line_number":257,"context_line":"        if size is None and kwargs[\u0027snapshot\u0027] is not None:"},{"line_number":258,"context_line":"            size \u003d kwargs[\u0027snapshot\u0027][\u0027volume_size\u0027]"},{"line_number":259,"context_line":"        elif size is None and kwargs[\u0027source_volume\u0027] is not None:"},{"line_number":260,"context_line":"            size \u003d kwargs[\u0027source_volume\u0027][\u0027size\u0027]"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F84A%3D","line":258,"updated":"2012-12-19 09:10:16.000000000","message":"The three lines above this comment is duplicated. Lines 245-247 could be removed.","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"e31461515546107ab2864dcea567000bd815e048","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        size \u003d volume.get(\u0027size\u0027, None)"},{"line_number":257,"context_line":"        if size is None and kwargs[\u0027snapshot\u0027] is not None:"},{"line_number":258,"context_line":"            size \u003d kwargs[\u0027snapshot\u0027][\u0027volume_size\u0027]"},{"line_number":259,"context_line":"        elif size is None and kwargs[\u0027source_volume\u0027] is not None:"},{"line_number":260,"context_line":"            size \u003d kwargs[\u0027source_volume\u0027][\u0027size\u0027]"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F7ys%3D","line":258,"in_reply_to":"AAAAM3%2F%2F84A%3D","updated":"2012-12-19 23:57:49.000000000","message":"Done","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"}],"cinder/tests/api/v1/test_volumes.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"178f6984ae657f2590ee711b33b7f6406db05d09","unresolved":false,"context_lines":[{"line_number":568,"context_line":"            display_description\u003d\u0027vol_desc\u0027,"},{"line_number":569,"context_line":"            volume_type\u003d\u0027vol_type\u0027,"},{"line_number":570,"context_line":"            snapshot_id\u003d\u0027snap_id\u0027,"},{"line_number":571,"context_line":"            #source_volid\u003d\u0027source_volid\u0027,"},{"line_number":572,"context_line":"            metadata\u003ddict(foo\u003d\u0027bar\u0027,"},{"line_number":573,"context_line":"                          baz\u003d\u0027quux\u0027, ), )"},{"line_number":574,"context_line":"        text \u003d serializer.serialize(dict(volume\u003draw_volume))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0Ok%3D","line":571,"updated":"2012-12-14 08:13:09.000000000","message":"commented out?","commit_id":"0ab2595f575a7dceca6d2dffb7885246e69077d4"}],"cinder/tests/test_volume_rpcapi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"ee3bcc4865a6b74cd83b0d4d987d6a0776ce98cc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                              host\u003d\u0027fake_host1\u0027,"},{"line_number":115,"context_line":"                              snapshot_id\u003d\u0027fake_snapshot_id\u0027,"},{"line_number":116,"context_line":"                              image_id\u003d\u0027fake_image_id\u0027,"},{"line_number":117,"context_line":"                              source_volid\u003d\u0027fake_src_id\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def test_delete_volume(self):"},{"line_number":120,"context_line":"        self._test_volume_api(\u0027delete_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F8k4%3D","line":117,"updated":"2012-12-19 15:26:31.000000000","message":"will need to add version\u003d\u00271.1\u0027 here, too","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"}],"cinder/volume/api.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"178f6984ae657f2590ee711b33b7f6406db05d09","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            msg \u003d (_(\"Volume size \u0027%s\u0027 must be an integer and greater than 0\")"},{"line_number":136,"context_line":"                   % size)"},{"line_number":137,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        if (image_id and not (source_volume or snapshot)):"},{"line_number":140,"context_line":"            # check image existence"},{"line_number":141,"context_line":"            image_meta \u003d self.image_service.show(context, image_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0Og%3D","line":138,"updated":"2012-12-14 08:13:09.000000000","message":"should we raise InvalidInput like we did above?","commit_id":"0ab2595f575a7dceca6d2dffb7885246e69077d4"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"cfe0a991e7773aca9ec6fd3fd5aa3bd9c41f1948","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                raise exception.InvalidSourceVolume(reason\u003dmsg)"},{"line_number":113,"context_line":"            if not size:"},{"line_number":114,"context_line":"                size \u003d source_volume[\u0027size\u0027]"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"            else:"},{"line_number":117,"context_line":"                if size \u003c source_volume[\u0027size\u0027]:"},{"line_number":118,"context_line":"                    msg \u003d _(\"Clones currently must be \""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F89g%3D","line":115,"updated":"2012-12-19 03:45:22.000000000","message":"Is this line intended to left blank?","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7ad734392fb26b78fe3548d5696ee4f6be554fa1","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                raise exception.InvalidSourceVolume(reason\u003dmsg)"},{"line_number":113,"context_line":"            if not size:"},{"line_number":114,"context_line":"                size \u003d source_volume[\u0027size\u0027]"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"            else:"},{"line_number":117,"context_line":"                if size \u003c source_volume[\u0027size\u0027]:"},{"line_number":118,"context_line":"                    msg \u003d _(\"Clones currently must be \""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F880%3D","line":115,"in_reply_to":"AAAAM3%2F%2F89g%3D","updated":"2012-12-19 03:55:17.000000000","message":"Done","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"}],"cinder/volume/driver.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"ad43fa30c6c0ce34ebaed2e88ed170582fb03ce2","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self._copy_volume(self.local_path(temp_snapshot),"},{"line_number":180,"context_line":"                          self.local_path(volume),"},{"line_number":181,"context_line":"                          src_vref[\u0027size\u0027])"},{"line_number":182,"context_line":"        self.delete_snapshot(temp_snapshot)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def delete_volume(self, volume):"},{"line_number":185,"context_line":"        \"\"\"Deletes a logical volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2FzLg%3D","line":182,"updated":"2012-12-16 14:33:04.000000000","message":"Should delete the snapshot and volume in case of errors (maybe use try/finally?)","commit_id":"0ab2595f575a7dceca6d2dffb7885246e69077d4"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"666ed51d6ffc0b1aee74e0e29c513352268c9ef1","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                              src_vref[\u0027size\u0027])"},{"line_number":183,"context_line":"        finally:"},{"line_number":184,"context_line":"            self.delete_snapshot(temp_snapshot)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def delete_volume(self, volume):"},{"line_number":187,"context_line":"        \"\"\"Deletes a logical volume.\"\"\""},{"line_number":188,"context_line":"        if self._volume_not_present(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F%2FUA%3D","line":185,"updated":"2012-12-17 17:35:37.000000000","message":"Avishay, good point on the cleanup, but I think the temporary snapshot is the only thing we should remove.  You\u0027ll notice that currently in these sorts of cases the user ends up with a volume in \"error\" state, I\u0027d prefer to keep that for now.  In the future maybe we rework things and always just clean up and respond with \"failed\".  That would probably be friendlier anyway but I think it should be a separate patch.\n\nThat would actually save some head-aches for folks but there are some down-sides.","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"b3e7db459eafec16c8f6b8d5fb6cb1339e027721","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"def create_cloned_volume(self, volume, src_vref):"},{"line_number":657,"context_line":"    \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":658,"context_line":"    raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F8z8%3D","line":658,"updated":"2012-12-19 09:10:16.000000000","message":"I am sorry, but I am not able to understand why this def is put here, not within any class.","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"db88bb6753ee890ee8a041564bb218e8db3938d2","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"def create_cloned_volume(self, volume, src_vref):"},{"line_number":657,"context_line":"    \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":658,"context_line":"    raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F2jk%3D","line":658,"in_reply_to":"AAAAM3%2F%2F7yA%3D","updated":"2013-01-02 12:37:04.000000000","message":"I think then, that this def should come under the class ISCSIDriver, and not as a global-level def, which is the case currently. Because, it seems to me that currently the create_cloned_volume defined in VolumeDriver is still inherited by ISCSIDriver, and will be invoked when one calls it in an instance of ISCSIDriver, or its subclass.","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"e31461515546107ab2864dcea567000bd815e048","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"def create_cloned_volume(self, volume, src_vref):"},{"line_number":657,"context_line":"    \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":658,"context_line":"    raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F7yA%3D","line":658,"in_reply_to":"AAAAM3%2F%2F8z8%3D","updated":"2012-12-19 23:57:49.000000000","message":"So the idea here is that the drivers that inherit from iSCSI don\u0027t provide create_cloned_volume support.  So rather than going through every individual 3\u0027rd party driver and implementing a function that just raises notimplemented, we put it in the parent class (here, in iSCSI).  That way in the future if a particular driver implements create_cloned_volume they just over-ride this base class method and don\u0027t have to mess with anything else.","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"}],"cinder/volume/manager.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"cfe0a991e7773aca9ec6fd3fd5aa3bd9c41f1948","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class VolumeManager(manager.SchedulerDependentManager):"},{"line_number":103,"context_line":"    \"\"\"Manages attachable block storage devices.\"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __init__(self, volume_driver\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F89M%3D","line":104,"updated":"2012-12-19 03:45:22.000000000","message":"RPC_API_VERSION here should be \u00271.1\u0027 as well.","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7ad734392fb26b78fe3548d5696ee4f6be554fa1","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class VolumeManager(manager.SchedulerDependentManager):"},{"line_number":103,"context_line":"    \"\"\"Manages attachable block storage devices.\"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __init__(self, volume_driver\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F88k%3D","line":104,"in_reply_to":"AAAAM3%2F%2F89M%3D","updated":"2012-12-19 03:55:17.000000000","message":"Done","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"d5ee9ad3b6326249bf9ad57f702db5f3bf23491c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            vol_size \u003d volume_ref[\u0027size\u0027]"},{"line_number":165,"context_line":"            LOG.debug(_(\"volume %(vol_name)s: creating lv of\""},{"line_number":166,"context_line":"                        \" size %(vol_size)sG\") % locals())"},{"line_number":167,"context_line":"            if all(x is None for x in(snapshot_id, image_id, source_volid)):"},{"line_number":168,"context_line":"                model_update \u003d self.driver.create_volume(volume_ref)"},{"line_number":169,"context_line":"            elif snapshot_id is not None:"},{"line_number":170,"context_line":"                snapshot_ref \u003d self.db.snapshot_get(context, snapshot_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2FwMA%3D","line":167,"updated":"2013-01-07 16:50:01.000000000","message":"formatting nit ... i\u0027d rather see a space after \"in\" since it\u0027s not a function call","commit_id":"d99fb6011cc610b78d42891800189feed0391742"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"d5ee9ad3b6326249bf9ad57f702db5f3bf23491c","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        # Check for https://bugs.launchpad.net/cinder/+bug/1065702"},{"line_number":380,"context_line":"        volume_ref \u003d self.db.volume_get(context, volume_id)"},{"line_number":381,"context_line":"        if (volume_ref[\u0027provider_location\u0027] and"},{"line_number":382,"context_line":"                volume_ref[\u0027name\u0027] not in volume_ref[\u0027provider_location\u0027]):"},{"line_number":383,"context_line":"            self.driver.ensure_export(context, volume_ref)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def _copy_image_to_volume(self, context, volume, image_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAM3%2F%2FwLw%3D","line":382,"updated":"2013-01-07 16:50:01.000000000","message":"unrelated formatting change","commit_id":"d99fb6011cc610b78d42891800189feed0391742"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"cfe0a991e7773aca9ec6fd3fd5aa3bd9c41f1948","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \u0027\u0027\u0027Client side of the volume rpc API."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    API version history:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        1.0 - Initial version."},{"line_number":36,"context_line":"    \u0027\u0027\u0027"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F89Q%3D","line":34,"updated":"2012-12-19 03:45:22.000000000","message":"Should be version 1.1 here.","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7ad734392fb26b78fe3548d5696ee4f6be554fa1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \u0027\u0027\u0027Client side of the volume rpc API."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    API version history:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        1.0 - Initial version."},{"line_number":36,"context_line":"    \u0027\u0027\u0027"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F88g%3D","line":34,"in_reply_to":"AAAAM3%2F%2F89Q%3D","updated":"2012-12-19 03:55:17.000000000","message":"Done","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"cfe0a991e7773aca9ec6fd3fd5aa3bd9c41f1948","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def create_volume(self, ctxt, volume, host,"},{"line_number":46,"context_line":"                      snapshot_id\u003dNone, image_id\u003dNone,"},{"line_number":47,"context_line":"                      source_volid\u003dNone):"},{"line_number":48,"context_line":"        self.cast(ctxt,"},{"line_number":49,"context_line":"                  self.make_msg(\u0027create_volume\u0027,"},{"line_number":50,"context_line":"                                volume_id\u003dvolume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F89U%3D","line":47,"updated":"2012-12-19 03:45:22.000000000","message":"Adding argument to RPC API will increase minor version number.","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7ad734392fb26b78fe3548d5696ee4f6be554fa1","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def create_volume(self, ctxt, volume, host,"},{"line_number":46,"context_line":"                      snapshot_id\u003dNone, image_id\u003dNone,"},{"line_number":47,"context_line":"                      source_volid\u003dNone):"},{"line_number":48,"context_line":"        self.cast(ctxt,"},{"line_number":49,"context_line":"                  self.make_msg(\u0027create_volume\u0027,"},{"line_number":50,"context_line":"                                volume_id\u003dvolume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F88c%3D","line":47,"in_reply_to":"AAAAM3%2F%2F89U%3D","updated":"2012-12-19 03:55:17.000000000","message":"Done","commit_id":"f9891e364c25c43a5bd4040f2a062a40a1c97abc"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9620bb4fc10475b8490ff054a52185618d53a3f0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        1.0 - Initial version."},{"line_number":37,"context_line":"    \u0027\u0027\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.1\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __init__(self):"},{"line_number":42,"context_line":"        super(VolumeAPI, self).__init__("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2F87U%3D","line":39,"updated":"2012-12-19 04:45:40.000000000","message":"I think \u0027BASE_RPC_API_VERSION\u0027 should remain 1.0 unless we have 2.x version.","commit_id":"9780ee066f01eafb286be8ced4bb3841ae681248"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"ee3bcc4865a6b74cd83b0d4d987d6a0776ce98cc","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                source_volid\u003dsource_volid),"},{"line_number":55,"context_line":"                  topic\u003drpc.queue_get_for(ctxt,"},{"line_number":56,"context_line":"                                          self.topic,"},{"line_number":57,"context_line":"                                          host))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete_volume(self, ctxt, volume):"},{"line_number":60,"context_line":"        self.cast(ctxt,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F8lA%3D","line":57,"updated":"2012-12-19 15:26:31.000000000","message":"Add version\u003d\u00271.1\u0027 here.  The purpose is to have the message sent say that the remote side must implement at least version \u00271.1\u0027","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"e31461515546107ab2864dcea567000bd815e048","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                source_volid\u003dsource_volid),"},{"line_number":55,"context_line":"                  topic\u003drpc.queue_get_for(ctxt,"},{"line_number":56,"context_line":"                                          self.topic,"},{"line_number":57,"context_line":"                                          host))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete_volume(self, ctxt, volume):"},{"line_number":60,"context_line":"        self.cast(ctxt,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2F7x4%3D","line":57,"in_reply_to":"AAAAM3%2F%2F8lA%3D","updated":"2012-12-19 23:57:49.000000000","message":"Done","commit_id":"8e78d003ed0bada6f3fdaaa98b8d260ffabe475a"}]}
