)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"740fc2b1514740f4a5d43967697cecd571d4e9f6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"handle backup/restore of any volume and Liberty was restricted to"},{"line_number":13,"context_line":"operate only on volumes placed on the same node."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Now when running in version heterogenious environment we need to use old"},{"line_number":16,"context_line":"way of backup jobs scheduling and switch to new one (round robin) only"},{"line_number":17,"context_line":"when everything is running Mitaka."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bae84128_e20edb8a","line":15,"updated":"2016-02-23 16:03:52.000000000","message":"heterogeneous","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"740fc2b1514740f4a5d43967697cecd571d4e9f6","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This commit also includes small changes to CinderObjectSerializer to"},{"line_number":31,"context_line":"block tries to \"forwardport\" an object when sending it over RPC. If a"},{"line_number":32,"context_line":"service receives an older object it should handle it explicitely."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Related-Blueprint: scalable-backup-service"},{"line_number":35,"context_line":"Co-Authored-By: Michal Dulko \u003cmichal.dulko@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bae84128_a231735c","line":32,"updated":"2016-02-23 16:03:52.000000000","message":"explicitly","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"}],"cinder/backup/api.py":[{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"ad9e8926e4887586f9c8ee7c8f4477aab25c3616","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            return cap \u003e\u003d (1, 3)  # Mitaka is marked by c-bak 1.3+."},{"line_number":152,"context_line":"        else:"},{"line_number":153,"context_line":"            # No version cap means we\u0027re running in homogenious env."},{"line_number":154,"context_line":"            return True"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _az_matched(self, service, availability_zone):"},{"line_number":157,"context_line":"        return ((not availability_zone) or"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_a04a5dc3","line":154,"updated":"2016-02-22 07:02:22.000000000","message":"I don\u0027t understand this \u0027else\u0027 part. Could you kindly help me to clear it?","commit_id":"782f7cf2ae6286162929b76208fc64abd5ff05a7"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"57dfe8f8d17c8f11793027cff0ecdcf0103b3c83","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            return cap \u003e\u003d (1, 3)  # Mitaka is marked by c-bak 1.3+."},{"line_number":152,"context_line":"        else:"},{"line_number":153,"context_line":"            # No version cap means we\u0027re running in homogenious env."},{"line_number":154,"context_line":"            return True"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _az_matched(self, service, availability_zone):"},{"line_number":157,"context_line":"        return ((not availability_zone) or"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_ddaca3a2","line":154,"in_reply_to":"bae84128_a04a5dc3","updated":"2016-02-22 09:30:58.000000000","message":"Oh, you\u0027re probably right, there shouldn\u0027t be a situation when we don\u0027t have a cap…","commit_id":"782f7cf2ae6286162929b76208fc64abd5ff05a7"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"ad9e8926e4887586f9c8ee7c8f4477aab25c3616","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":443,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":444,"context_line":"        backup.host \u003d self._get_available_backup_service_host("},{"line_number":445,"context_line":"            backup.host, backup.availability_zone)"},{"line_number":446,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":447,"context_line":"        backup.restore_volume_id \u003d volume.id"},{"line_number":448,"context_line":"        backup.save()"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_e5a117ab","line":445,"updated":"2016-02-22 07:02:22.000000000","message":"Here we also need to add volume_host like create.\n\nAs both restore and create is related to attach volume.","commit_id":"782f7cf2ae6286162929b76208fc64abd5ff05a7"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"d9c23241ca6eb50666abc0a515b869860b98e3f1","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":443,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":444,"context_line":"        backup.host \u003d self._get_available_backup_service_host("},{"line_number":445,"context_line":"            backup.host, backup.availability_zone)"},{"line_number":446,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":447,"context_line":"        backup.restore_volume_id \u003d volume.id"},{"line_number":448,"context_line":"        backup.save()"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_7c5a8e2b","line":445,"in_reply_to":"bae84128_5d78932a","updated":"2016-02-23 02:14:41.000000000","message":"No, we no need to add the parameter. My mistake!","commit_id":"782f7cf2ae6286162929b76208fc64abd5ff05a7"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"57dfe8f8d17c8f11793027cff0ecdcf0103b3c83","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":443,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":444,"context_line":"        backup.host \u003d self._get_available_backup_service_host("},{"line_number":445,"context_line":"            backup.host, backup.availability_zone)"},{"line_number":446,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":447,"context_line":"        backup.restore_volume_id \u003d volume.id"},{"line_number":448,"context_line":"        backup.save()"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_5d78932a","line":445,"in_reply_to":"bae84128_e5a117ab","updated":"2016-02-22 09:30:58.000000000","message":"Do we? Isn\u0027t backup.host supposed to be the same as volume.host until we finish the upgrade?","commit_id":"782f7cf2ae6286162929b76208fc64abd5ff05a7"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"5cf5ffafccb97c987e57e0d49e157ba355a63105","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # NOTE(dulek): No version cap means we\u0027re running in an environment"},{"line_number":154,"context_line":"            # without c-bak services. Letting it pass as Mitaka, request will"},{"line_number":155,"context_line":"            # just fail anyway so it doesn\u0027t really matter."},{"line_number":156,"context_line":"            return True"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _az_matched(self, service, availability_zone):"},{"line_number":159,"context_line":"        return ((not availability_zone) or"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_a17a3175","line":156,"updated":"2016-02-23 02:14:06.000000000","message":"This is reasonable.","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"740fc2b1514740f4a5d43967697cecd571d4e9f6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # NOTE(dulek): No version cap means we\u0027re running in an environment"},{"line_number":154,"context_line":"            # without c-bak services. Letting it pass as Mitaka, request will"},{"line_number":155,"context_line":"            # just fail anyway so it doesn\u0027t really matter."},{"line_number":156,"context_line":"            return True"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _az_matched(self, service, availability_zone):"},{"line_number":159,"context_line":"        return ((not availability_zone) or"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_21971eed","line":156,"in_reply_to":"bae84128_a17a3175","updated":"2016-02-23 16:03:52.000000000","message":"OK.","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"740fc2b1514740f4a5d43967697cecd571d4e9f6","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        # environment we will be scheduling backup jobs the old way."},{"line_number":199,"context_line":"        #"},{"line_number":200,"context_line":"        # This snippet should go away in Newton. Note that volume_host"},{"line_number":201,"context_line":"        # parameter will also be unnecessary then."},{"line_number":202,"context_line":"        if not self._is_scalable_only():"},{"line_number":203,"context_line":"            if volume_host and self._is_backup_service_enabled(az,"},{"line_number":204,"context_line":"                                                               volume_host):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_016adaed","line":201,"updated":"2016-02-23 16:03:52.000000000","message":"OK","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d9bbcc936afda9394b8145eb588794b19ebbabf4","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":445,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":446,"context_line":"        backup.host \u003d self._get_available_backup_service_host("},{"line_number":447,"context_line":"            backup.host, backup.availability_zone)"},{"line_number":448,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":449,"context_line":"        backup.restore_volume_id \u003d volume.id"},{"line_number":450,"context_line":"        backup.save()"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_73db867c","line":447,"updated":"2016-02-24 11:29:06.000000000","message":"ok, as this is in restore.","commit_id":"05a516da01225bed8b99ca49e558d40d71df3fe1"}],"cinder/backup/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"03df60c4877ad1425ecac5947b97ece732538ba4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    \"\"\"Manages backup of block storage devices.\"\"\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    RPC_API_VERSION \u003d \u00271.2\u0027"},{"line_number":90,"context_line":"    RPC_CURRENT_VERSION \u003d \u00271.2\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_703706e4","line":90,"range":{"start_line":90,"start_character":0,"end_line":90,"end_character":31},"updated":"2016-01-20 12:58:57.000000000","message":"I\u0027m not sure why we need a new constant?","commit_id":"4da7dcb014bc86b03290cceb8b679a8a927307ce"}],"cinder/exception.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ffd88408bd47bfd4c2d66638e208a76b8a20fbd2","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"class ServiceTooOld(Invalid):"},{"line_number":355,"context_line":"    message \u003d _(\"Service is too old to fulfil this request.\")"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"class HostNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_fccbdba1","line":355,"updated":"2016-02-24 14:55:07.000000000","message":"I think we could probably word this a little better. Something like \"Service version does not include support for this request\" or something along those lines.\n\nBut not that important. Nothing I would block on. Someone looking for a quick change I\u0027m sure will fix \"fulfil\" to \"fulfill\". ;)","commit_id":"05a516da01225bed8b99ca49e558d40d71df3fe1"}],"cinder/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"03df60c4877ad1425ecac5947b97ece732538ba4","unresolved":false,"context_lines":[{"line_number":76,"context_line":"class Manager(base.Base, PeriodicTasks):"},{"line_number":77,"context_line":"    # Set RPC API version to 1.0 by default."},{"line_number":78,"context_line":"    RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":79,"context_line":"    RPC_CURRENT_VERSION \u003d None"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_3048ae5b","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":30},"updated":"2016-01-20 12:58:57.000000000","message":"I think RPC_API_VERSION is supposed to mean the current one. That is - the version the manager is able to handle.","commit_id":"4da7dcb014bc86b03290cceb8b679a8a927307ce"}],"cinder/objects/base.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"740fc2b1514740f4a5d43967697cecd571d4e9f6","unresolved":false,"context_lines":[{"line_number":405,"context_line":"                # NOTE(dulek): Do not set version cap to be higher than actual"},{"line_number":406,"context_line":"                # object version as we don\u0027t support \"forwardporting\" of"},{"line_number":407,"context_line":"                # objects. If service will receive an object that\u0027s too old it"},{"line_number":408,"context_line":"                # should handle it explicitely."},{"line_number":409,"context_line":"                version_cap \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        return version_cap"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_643f7487","line":408,"updated":"2016-02-23 16:03:52.000000000","message":"explicitly","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"5cf5ffafccb97c987e57e0d49e157ba355a63105","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                # object version as we don\u0027t support \"forwardporting\" of"},{"line_number":407,"context_line":"                # objects. If service will receive an object that\u0027s too old it"},{"line_number":408,"context_line":"                # should handle it explicitely."},{"line_number":409,"context_line":"                version_cap \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        return version_cap"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_411fe56b","line":409,"updated":"2016-02-23 02:14:06.000000000","message":"Without the change, if it is forwardporting, it will raise an exception. \n\nhttps://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/base.py#L531\n\nBased on current mechanism, there should be no forwardporting. So I think it no need to do this change.","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9762f102a638ef5c964b8ad38444580b2e8495ba","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                # object version as we don\u0027t support \"forwardporting\" of"},{"line_number":407,"context_line":"                # objects. If service will receive an object that\u0027s too old it"},{"line_number":408,"context_line":"                # should handle it explicitely."},{"line_number":409,"context_line":"                version_cap \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        return version_cap"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_b2c0ac51","line":409,"in_reply_to":"bae84128_411fe56b","updated":"2016-02-23 11:31:51.000000000","message":"Unfortunately we do. :( Consider this scenario:\n\n* We\u0027ve upgraded all the c-vols. In the env we\u0027re left with Liberty c-baks only.\n* We upgrade one of the c-baks. It detects that all the c-vols are new, so RPC and object version caps are set to the current Mitaka version.\n* We send a backup-create request. It starts in the API which downgrades the backup object (as some c-baks are still old). We don\u0027t actually remove any data there, but VERSION property is set to lower version.\n* New c-bak receives older version of the object. Now it wants to send it to the c-vol in volume_rpcapi.get_backup_device call. This is downgraded object, but our object version cap for c-vol is set to the upgraded one as we have all the c-vols upgraded.","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"d02be03bae71ca6daea52b50ecc2b9cad2086000","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                # object version as we don\u0027t support \"forwardporting\" of"},{"line_number":407,"context_line":"                # objects. If service will receive an object that\u0027s too old it"},{"line_number":408,"context_line":"                # should handle it explicitely."},{"line_number":409,"context_line":"                version_cap \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        return version_cap"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_5ef142cc","line":409,"in_reply_to":"bae84128_b2c0ac51","updated":"2016-02-24 02:09:07.000000000","message":"Yes, you are right!","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"740fc2b1514740f4a5d43967697cecd571d4e9f6","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                # object version as we don\u0027t support \"forwardporting\" of"},{"line_number":407,"context_line":"                # objects. If service will receive an object that\u0027s too old it"},{"line_number":408,"context_line":"                # should handle it explicitely."},{"line_number":409,"context_line":"                version_cap \u003d None"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        return version_cap"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_242e0c43","line":409,"in_reply_to":"bae84128_b2c0ac51","updated":"2016-02-23 16:03:52.000000000","message":"makes sense","commit_id":"c53e0b917613ab1d39fffeab018eba635d7bfd82"}],"cinder/objects/service.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"03df60c4877ad1425ecac5947b97ece732538ba4","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \u0027modified_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        \u0027rpc_current_version\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":51,"context_line":"    }"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_d081124f","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":65},"updated":"2016-01-20 12:58:57.000000000","message":"This is already done in my patches for rpc compatibility. I think yours should be dependent from them.","commit_id":"4da7dcb014bc86b03290cceb8b679a8a927307ce"}],"cinder/service.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"03df60c4877ad1425ecac5947b97ece732538ba4","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            service_ref \u003d objects.Service.get_by_args("},{"line_number":152,"context_line":"                ctxt, self.host, self.binary)"},{"line_number":153,"context_line":"            # Update rpc_current_version if needed."},{"line_number":154,"context_line":"            if (service_ref.rpc_current_version !\u003d"},{"line_number":155,"context_line":"                    self.manager.rpc_current_version):"},{"line_number":156,"context_line":"                service_ref.rpc_current_version \u003d \\"},{"line_number":157,"context_line":"                    self.manager.rpc_current_version"},{"line_number":158,"context_line":"                service_ref.save()"},{"line_number":159,"context_line":"            self.service_id \u003d service_ref.id"},{"line_number":160,"context_line":"        except exception.NotFound:"},{"line_number":161,"context_line":"            self._create_service_ref(ctxt)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_d0cfd2b1","line":158,"range":{"start_line":153,"start_character":0,"end_line":158,"end_character":34},"updated":"2016-01-20 12:58:57.000000000","message":"This is already done in my RPC compatibility patches.","commit_id":"4da7dcb014bc86b03290cceb8b679a8a927307ce"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"03df60c4877ad1425ecac5947b97ece732538ba4","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                  \u0027topic\u0027: self.topic,"},{"line_number":215,"context_line":"                  \u0027report_count\u0027: 0,"},{"line_number":216,"context_line":"                  \u0027availability_zone\u0027: zone,"},{"line_number":217,"context_line":"                  \u0027rpc_current_version\u0027: self.manager.rpc_current_version}"},{"line_number":218,"context_line":"        service_ref \u003d objects.Service(context\u003dcontext, **kwargs)"},{"line_number":219,"context_line":"        service_ref.create()"},{"line_number":220,"context_line":"        self.service_id \u003d service_ref.id"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_50c44291","line":217,"range":{"start_line":217,"start_character":0,"end_line":217,"end_character":74},"updated":"2016-01-20 12:58:57.000000000","message":"ditto","commit_id":"4da7dcb014bc86b03290cceb8b679a8a927307ce"}],"cinder/volume/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"03df60c4877ad1425ecac5947b97ece732538ba4","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \"\"\"Manages attachable block storage devices.\"\"\""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    RPC_API_VERSION \u003d \u00271.38\u0027"},{"line_number":208,"context_line":"    RPC_CURRENT_VERSION \u003d \u00271.38\u0027"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_f0be96d3","line":208,"range":{"start_line":208,"start_character":4,"end_line":208,"end_character":23},"updated":"2016-01-20 12:58:57.000000000","message":"Why add new constant?","commit_id":"4da7dcb014bc86b03290cceb8b679a8a927307ce"}]}
