)]}'
{"cinder/backup/rpcapi.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    TOPIC \u003d constants.BACKUP_TOPIC"},{"line_number":52,"context_line":"    BINARY \u003d \u0027cinder-backup\u0027"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _get_cctxt(self, version\u003dNone, **kwargs):"},{"line_number":55,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":56,"context_line":"        default_version \u003d \u00272.0\u0027"},{"line_number":57,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":58,"context_line":"        return super(BackupAPI, self)._get_cctxt(**kwargs)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def create_backup(self, ctxt, backup):"},{"line_number":61,"context_line":"        LOG.debug(\"create_backup in rpcapi backup_id %s\", backup.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_3447c2bc","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":58},"updated":"2016-10-05 09:05:15.000000000","message":"If we make the change I suggest in rpc.py we wouldn\u0027t need to define anything in here, because the default version would be \u00272.0\u0027.","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"2ae8f1b24cb8e6e961c4055b30e247d1bad43189","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    TOPIC \u003d constants.BACKUP_TOPIC"},{"line_number":52,"context_line":"    BINARY \u003d \u0027cinder-backup\u0027"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _get_cctxt(self, version\u003dNone, **kwargs):"},{"line_number":55,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":56,"context_line":"        default_version \u003d \u00272.0\u0027"},{"line_number":57,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":58,"context_line":"        return super(BackupAPI, self)._get_cctxt(**kwargs)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def create_backup(self, ctxt, backup):"},{"line_number":61,"context_line":"        LOG.debug(\"create_backup in rpcapi backup_id %s\", backup.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_974a2dc4","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":58},"in_reply_to":"1a95cdbc_3447c2bc","updated":"2016-10-12 14:30:39.000000000","message":"Done","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"}],"cinder/rpc.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                return version"},{"line_number":199,"context_line":"        return versions[-1]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _get_cctxt(self, version, **kwargs):"},{"line_number":202,"context_line":"        if isinstance(version, tuple):"},{"line_number":203,"context_line":"            version \u003d self._compat_ver(*version)"},{"line_number":204,"context_line":"        return self.client.prepare(version\u003dversion, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_940fb6e0","line":201,"updated":"2016-10-05 09:05:15.000000000","message":"-1: We don\u0027t need to define this method in each RPC class, we can create a generic method here that works for all. We should set version as optional arguments that defaults to None and have a class attribute with the defaults that is used when version is not passed (RPC_DEFAULT_VERSION \u003d \u00272.0\u0027.  It should also accept the server optional argument (called host in volume RPC method), as it will need to convert it for zmq.","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"2ae8f1b24cb8e6e961c4055b30e247d1bad43189","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                return version"},{"line_number":199,"context_line":"        return versions[-1]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _get_cctxt(self, version, **kwargs):"},{"line_number":202,"context_line":"        if isinstance(version, tuple):"},{"line_number":203,"context_line":"            version \u003d self._compat_ver(*version)"},{"line_number":204,"context_line":"        return self.client.prepare(version\u003dversion, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_ba47184a","line":201,"in_reply_to":"1a95cdbc_940fb6e0","updated":"2016-10-12 14:30:39.000000000","message":"Good idea, code updated.","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"}],"cinder/scheduler/rpcapi.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    TOPIC \u003d constants.SCHEDULER_TOPIC"},{"line_number":65,"context_line":"    BINARY \u003d \u0027cinder-scheduler\u0027"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def _get_cctxt(self, version\u003dNone, **kwargs):"},{"line_number":68,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":69,"context_line":"        default_version \u003d (\u00273.0\u0027, \u00272.0\u0027)"},{"line_number":70,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":71,"context_line":"        return super(SchedulerAPI, self)._get_cctxt(**kwargs)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def create_consistencygroup(self, ctxt, topic, group,"},{"line_number":74,"context_line":"                                request_spec_list\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_54d36e38","line":71,"range":{"start_line":67,"start_character":0,"end_line":71,"end_character":61},"updated":"2016-10-05 09:05:15.000000000","message":"If we make the change I suggest in rpc.py we would just need to set the class atribute with the default instead of the whole method:\n\n RPC_DEFAULT_VERSION \u003d (\u00273.0\u0027, \u00272.0\u0027)","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"2ae8f1b24cb8e6e961c4055b30e247d1bad43189","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    TOPIC \u003d constants.SCHEDULER_TOPIC"},{"line_number":65,"context_line":"    BINARY \u003d \u0027cinder-scheduler\u0027"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def _get_cctxt(self, version\u003dNone, **kwargs):"},{"line_number":68,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":69,"context_line":"        default_version \u003d (\u00273.0\u0027, \u00272.0\u0027)"},{"line_number":70,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":71,"context_line":"        return super(SchedulerAPI, self)._get_cctxt(**kwargs)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def create_consistencygroup(self, ctxt, topic, group,"},{"line_number":74,"context_line":"                                request_spec_list\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_da9becc7","line":71,"range":{"start_line":67,"start_character":0,"end_line":71,"end_character":61},"in_reply_to":"1a95cdbc_54d36e38","updated":"2016-10-12 14:30:39.000000000","message":"Done","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def migrate_volume_to_host(self, ctxt, topic, volume_id, host,"},{"line_number":140,"context_line":"                               force_host_copy\u003dFalse, request_spec\u003dNone,"},{"line_number":141,"context_line":"                               filter_properties\u003dNone, volume\u003dNone):"},{"line_number":142,"context_line":"        cctxt \u003d self._get_cctxt((\u00273.0\u0027, \u00272.0\u0027))"},{"line_number":143,"context_line":"        version \u003d cctxt.target.version"},{"line_number":144,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":145,"context_line":"        msg_args \u003d {\u0027host\u0027: host, \u0027force_host_copy\u0027: force_host_copy,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_94ab3689","line":142,"range":{"start_line":142,"start_character":32,"end_line":142,"end_character":46},"updated":"2016-10-05 09:05:15.000000000","message":"This is the default, no need to pass versions","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def retype(self, ctxt, topic, volume_id, request_spec\u003dNone,"},{"line_number":156,"context_line":"               filter_properties\u003dNone, volume\u003dNone):"},{"line_number":157,"context_line":"        cctxt \u003d self._get_cctxt((\u00273.0\u0027, \u00272.0\u0027))"},{"line_number":158,"context_line":"        version \u003d cctxt.target.version"},{"line_number":159,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":160,"context_line":"        msg_args \u003d {\u0027request_spec\u0027: request_spec_p,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_b4b032f6","line":157,"updated":"2016-10-05 09:05:15.000000000","message":"ditto","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    TOPIC \u003d constants.VOLUME_TOPIC"},{"line_number":120,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_cctxt(self, host\u003dNone, version\u003dNone, **kwargs):"},{"line_number":123,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":124,"context_line":"        default_version \u003d (\u00273.0\u0027, \u00272.0\u0027)"},{"line_number":125,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":126,"context_line":"        if host is not None:"},{"line_number":127,"context_line":"            kwargs[\u0027server\u0027] \u003d utils.get_volume_rpc_host(host)"},{"line_number":128,"context_line":"        return super(VolumeAPI, self)._get_cctxt(**kwargs)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def create_consistencygroup(self, ctxt, group, host):"},{"line_number":131,"context_line":"        cctxt \u003d self._get_cctxt(host)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_14dc8611","line":128,"range":{"start_line":122,"start_character":0,"end_line":128,"end_character":58},"updated":"2016-10-05 09:05:15.000000000","message":"If we make the change I suggest in rpc.py we would just need to set the class atribute with the default instead of the whole method:\n\n RPC_DEFAULT_VERSION \u003d (\u00273.0\u0027, \u00272.0\u0027)","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"2ae8f1b24cb8e6e961c4055b30e247d1bad43189","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    TOPIC \u003d constants.VOLUME_TOPIC"},{"line_number":120,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_cctxt(self, host\u003dNone, version\u003dNone, **kwargs):"},{"line_number":123,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":124,"context_line":"        default_version \u003d (\u00273.0\u0027, \u00272.0\u0027)"},{"line_number":125,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":126,"context_line":"        if host is not None:"},{"line_number":127,"context_line":"            kwargs[\u0027server\u0027] \u003d utils.get_volume_rpc_host(host)"},{"line_number":128,"context_line":"        return super(VolumeAPI, self)._get_cctxt(**kwargs)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def create_consistencygroup(self, ctxt, group, host):"},{"line_number":131,"context_line":"        cctxt \u003d self._get_cctxt(host)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_f72e09f9","line":128,"range":{"start_line":122,"start_character":0,"end_line":128,"end_character":58},"in_reply_to":"1a95cdbc_14dc8611","updated":"2016-10-12 14:30:39.000000000","message":"Done","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"d4744ad2baac080a0000d344a8dc0b7bb59d4879","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    TOPIC \u003d constants.VOLUME_TOPIC"},{"line_number":120,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_cctxt(self, host\u003dNone, version\u003dNone, **kwargs):"},{"line_number":123,"context_line":"        # version parameter can be single version string or tuple of strings"},{"line_number":124,"context_line":"        default_version \u003d (\u00273.0\u0027, \u00272.0\u0027)"},{"line_number":125,"context_line":"        kwargs[\u0027version\u0027] \u003d version or default_version"},{"line_number":126,"context_line":"        if host is not None:"},{"line_number":127,"context_line":"            kwargs[\u0027server\u0027] \u003d utils.get_volume_rpc_host(host)"},{"line_number":128,"context_line":"        return super(VolumeAPI, self)._get_cctxt(**kwargs)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def create_consistencygroup(self, ctxt, group, host):"},{"line_number":131,"context_line":"        cctxt \u003d self._get_cctxt(host)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_9ec081e2","line":128,"range":{"start_line":122,"start_character":0,"end_line":128,"end_character":58},"in_reply_to":"fa6399be_f72e09f9","updated":"2016-10-12 16:24:33.000000000","message":"Sadly moving utils.get_volume_rpc_host to rpc.py causes import loop (rpc imports cinder.volume.utils which imports rpc), so I moved all other logic except that.","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        cctxt.cast(ctxt, \u0027create_volume\u0027, **msg_args)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def delete_volume(self, ctxt, volume, unmanage_only\u003dFalse, cascade\u003dFalse):"},{"line_number":183,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, (\u00273.0\u0027, \u00272.0\u0027))"},{"line_number":184,"context_line":"        version \u003d cctxt.target.version"},{"line_number":185,"context_line":"        msg_args \u003d {"},{"line_number":186,"context_line":"            \u0027volume\u0027: volume, \u0027unmanage_only\u0027: unmanage_only,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_f4939aa1","line":183,"range":{"start_line":183,"start_character":45,"end_line":183,"end_character":59},"updated":"2016-10-05 09:05:15.000000000","message":"Why pass this if it\u0027s the default?","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"2ae8f1b24cb8e6e961c4055b30e247d1bad43189","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        cctxt.cast(ctxt, \u0027create_volume\u0027, **msg_args)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def delete_volume(self, ctxt, volume, unmanage_only\u003dFalse, cascade\u003dFalse):"},{"line_number":183,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, (\u00273.0\u0027, \u00272.0\u0027))"},{"line_number":184,"context_line":"        version \u003d cctxt.target.version"},{"line_number":185,"context_line":"        msg_args \u003d {"},{"line_number":186,"context_line":"            \u0027volume\u0027: volume, \u0027unmanage_only\u0027: unmanage_only,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_d704a57f","line":183,"range":{"start_line":183,"start_character":45,"end_line":183,"end_character":59},"in_reply_to":"1a95cdbc_f4939aa1","updated":"2016-10-12 14:30:39.000000000","message":"I left version numbers (even though they are the same as default) in places like here to make it clear that function support both versions, as long as compatibility code is present, even when default version would change. Now when version 2.x is dropped it no longer makes sense.","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"03a70409963c31156fb140f6bf3e5a87cbe38b6d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        cctxt.cast(ctxt, \u0027delete_volume\u0027, **msg_args)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def create_snapshot(self, ctxt, volume, snapshot):"},{"line_number":196,"context_line":"        cctxt \u003d self._get_cctxt(volume[\u0027host\u0027], (\u00273.0\u0027, \u00272.0\u0027))"},{"line_number":197,"context_line":"        version \u003d cctxt.target.version"},{"line_number":198,"context_line":"        msg_args \u003d {"},{"line_number":199,"context_line":"            \u0027snapshot\u0027: snapshot,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_94f3360a","line":196,"range":{"start_line":196,"start_character":47,"end_line":196,"end_character":62},"updated":"2016-10-05 09:05:15.000000000","message":"ditto","commit_id":"e24305aa69f1b0651891e675c111d94218ca4571"}]}
