)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e6a350743849444683084fccc9c234727f9909ec","unresolved":false,"context_lines":[{"line_number":20,"context_line":"related to the backups on current host. Backing-up volumes can"},{"line_number":21,"context_line":"be found with field backup.volume_id. Restoring volumes are found"},{"line_number":22,"context_line":"by new field backup.restore_volume_id."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I757be7a5e47fc366c181400587b5a61fe3709a0b"},{"line_number":25,"context_line":"Partial-Implements: bp scalable-backup-service"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a7b0d38_7e81e249","line":23,"updated":"2015-12-23 18:40:36.000000000","message":"APIImpact flag is needed","commit_id":"ab3d11b3bbe6c36e52b851d69ac4a22059b62298"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"019479342060f3458a04f0893ce77a7da33331c5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"When backup service starts, it does cleanup tasks on both"},{"line_number":15,"context_line":"backs and volumes on current host."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"But with the bp scaling backup service, backup service and"},{"line_number":18,"context_line":"volume services can run on different hosts. When doing cleanup"},{"line_number":19,"context_line":"tasks, we need to find out backing-up and restoring volumes"},{"line_number":20,"context_line":"related to the backups on current host. Backing-up volumes can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_50020440","line":17,"range":{"start_line":17,"start_character":16,"end_line":17,"end_character":38},"updated":"2015-12-29 17:06:55.000000000","message":"You may use bp scalable-backup-service here to have a link to the bp created.","commit_id":"4e528dccb398157e6be5de435cee14ef7fb3b832"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"55f1364242c3a9dd35754c46c6b7f225b4d0afae","unresolved":false,"context_lines":[{"line_number":14,"context_line":"When backup service starts, it does cleanup tasks on both"},{"line_number":15,"context_line":"backs and volumes on current host."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"But with the bp scaling backup service, backup service and"},{"line_number":18,"context_line":"volume services can run on different hosts. When doing cleanup"},{"line_number":19,"context_line":"tasks, we need to find out backing-up and restoring volumes"},{"line_number":20,"context_line":"related to the backups on current host. Backing-up volumes can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_77eef323","line":17,"range":{"start_line":17,"start_character":16,"end_line":17,"end_character":38},"in_reply_to":"fa69d971_50020440","updated":"2015-12-31 02:19:40.000000000","message":"Done","commit_id":"4e528dccb398157e6be5de435cee14ef7fb3b832"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"43ca02fad643530608bf32375f67860e4eee2dc3","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Currently volume service and backup service are in same host."},{"line_number":14,"context_line":"When backup service starts, it does cleanup tasks on both"},{"line_number":15,"context_line":"backs and volumes on current host."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"But with bp scalable-backup-service, backup service and"},{"line_number":18,"context_line":"volume services can run on different hosts. When doing cleanup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa69d971_b7896477","line":15,"updated":"2016-01-05 09:52:57.000000000","message":"Since you have to rebase anyways:\n\n  s/backs/backups","commit_id":"0f9ca18b1e72373bc08fb642b869fefcf7d41c3f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"db26b855b841cd5d4a80d9f7c9920fe7bb3ccdb0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"be found with field backup.volume_id. Restoring volumes are found"},{"line_number":22,"context_line":"by new field backup.restore_volume_id."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"APIImpact"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: I757be7a5e47fc366c181400587b5a61fe3709a0b"},{"line_number":27,"context_line":"Partial-Implements: bp scalable-backup-service"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa69d971_0005730f","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":9},"updated":"2016-01-11 13:17:24.000000000","message":"As discussed in IRC with Tom Barron, this patch doesn\u0027t change any public REST API so APIImpact flag is not needed here","commit_id":"feeb319394ec040bb0c781468d2f19b2b9f30f3e"}],"cinder/backup/api.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e6a350743849444683084fccc9c234727f9909ec","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":319,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":320,"context_line":"        backup.status \u003d \u0027restoring\u0027"},{"line_number":321,"context_line":"        backup.restore_volume_id \u003d volume[\u0027id\u0027]"},{"line_number":322,"context_line":"        backup.save()"},{"line_number":323,"context_line":"        volume_host \u003d volume_utils.extract_host(volume[\u0027host\u0027], \u0027host\u0027)"},{"line_number":324,"context_line":"        self.db.volume_update(context, volume_id, {\u0027status\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_9e828e51","line":321,"range":{"start_line":321,"start_character":15,"end_line":321,"end_character":32},"updated":"2015-12-23 18:40:36.000000000","message":"Do we need to add this field for other API methods?","commit_id":"ab3d11b3bbe6c36e52b851d69ac4a22059b62298"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"fa67fa15e95093c827eae5d796aa107a3926b12c","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":319,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":320,"context_line":"        backup.status \u003d \u0027restoring\u0027"},{"line_number":321,"context_line":"        backup.restore_volume_id \u003d volume[\u0027id\u0027]"},{"line_number":322,"context_line":"        backup.save()"},{"line_number":323,"context_line":"        volume_host \u003d volume_utils.extract_host(volume[\u0027host\u0027], \u0027host\u0027)"},{"line_number":324,"context_line":"        self.db.volume_update(context, volume_id, {\u0027status\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_3603bdba","line":321,"range":{"start_line":321,"start_character":15,"end_line":321,"end_character":32},"in_reply_to":"1a7b0d38_9e828e51","updated":"2015-12-30 07:11:28.000000000","message":"This field is only used in backup cleanup. Please see the patch https://review.openstack.org/#/c/262395/1/cinder/backup/manager.py","commit_id":"ab3d11b3bbe6c36e52b851d69ac4a22059b62298"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"af65ac4a0d3f520ec1d96c35cc2323f06af74fa3","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":363,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":364,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":365,"context_line":"        backup.restore_volume_id \u003d volume[\u0027id\u0027]"},{"line_number":366,"context_line":"        backup.save()"},{"line_number":367,"context_line":"        volume_host \u003d volume_utils.extract_host(volume[\u0027host\u0027], \u0027host\u0027)"},{"line_number":368,"context_line":"        self.db.volume_update(context, volume_id, {\u0027status\u0027:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_b3957189","line":365,"range":{"start_line":365,"start_character":41,"end_line":365,"end_character":47},"updated":"2016-01-07 20:10:36.000000000","message":"volume_api.get returns an object, so you can safely go with \n\n backup.restore_volume_id \u003d volume.id","commit_id":"feeb319394ec040bb0c781468d2f19b2b9f30f3e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"58077bccbebf28d5d79ddb2dca4e2dcd687837fa","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        # Setting the status here rather than setting at start and unrolling"},{"line_number":363,"context_line":"        # for each error condition, it should be a very small window"},{"line_number":364,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":365,"context_line":"        backup.restore_volume_id \u003d volume[\u0027id\u0027]"},{"line_number":366,"context_line":"        backup.save()"},{"line_number":367,"context_line":"        volume_host \u003d volume_utils.extract_host(volume[\u0027host\u0027], \u0027host\u0027)"},{"line_number":368,"context_line":"        self.db.volume_update(context, volume_id, {\u0027status\u0027:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_4ae2afa1","line":365,"range":{"start_line":365,"start_character":41,"end_line":365,"end_character":47},"in_reply_to":"fa69d971_b3957189","updated":"2016-01-11 12:01:59.000000000","message":"Agree, we need to replace it and not to introduce new dict-style objects usage","commit_id":"feeb319394ec040bb0c781468d2f19b2b9f30f3e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"58077bccbebf28d5d79ddb2dca4e2dcd687837fa","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        backup.status \u003d fields.BackupStatus.RESTORING"},{"line_number":365,"context_line":"        backup.restore_volume_id \u003d volume[\u0027id\u0027]"},{"line_number":366,"context_line":"        backup.save()"},{"line_number":367,"context_line":"        volume_host \u003d volume_utils.extract_host(volume[\u0027host\u0027], \u0027host\u0027)"},{"line_number":368,"context_line":"        self.db.volume_update(context, volume_id, {\u0027status\u0027:"},{"line_number":369,"context_line":"                                                   \u0027restoring-backup\u0027})"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_eae92380","line":367,"range":{"start_line":367,"start_character":54,"end_line":367,"end_character":56},"updated":"2016-01-11 12:01:59.000000000","message":"The same as above","commit_id":"feeb319394ec040bb0c781468d2f19b2b9f30f3e"}],"cinder/db/sqlalchemy/migrate_repo/versions/062_add_restore_volume_id_to_backups.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"019479342060f3458a04f0893ce77a7da33331c5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    restore_volume_id \u003d Column(\u0027restore_volume_id\u0027, String(length\u003d36))\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"    backups.create_column(restore_volume_id)\r"},{"line_number":27,"context_line":"    backups.update().values(restore_volume_id\u003dNone).execute()\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_307e70af","line":27,"range":{"start_line":27,"start_character":46,"end_line":27,"end_character":50},"updated":"2015-12-29 17:06:55.000000000","message":"Do we need to set it explicitly to None (aka NULL)? I think it will be NULL be default? Am I wrong?\n\nI\u0027m a little concerned about this update - it will be big if we will have a lot of backups.","commit_id":"4e528dccb398157e6be5de435cee14ef7fb3b832"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"55f1364242c3a9dd35754c46c6b7f225b4d0afae","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    restore_volume_id \u003d Column(\u0027restore_volume_id\u0027, String(length\u003d36))\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"    backups.create_column(restore_volume_id)\r"},{"line_number":27,"context_line":"    backups.update().values(restore_volume_id\u003dNone).execute()\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_57e96f19","line":27,"range":{"start_line":27,"start_character":46,"end_line":27,"end_character":50},"in_reply_to":"fa69d971_307e70af","updated":"2015-12-31 02:19:40.000000000","message":"The default value is None if not defined. And the default value is set during creation. So no need to do it again.","commit_id":"4e528dccb398157e6be5de435cee14ef7fb3b832"}],"cinder/db/sqlalchemy/migrate_repo/versions/064_add_restore_volume_id_to_backups.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9ce8f0e9c54dbee3d4bef284bdd8ddd628761ab4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Intel Corporation\r"},{"line_number":2,"context_line":"# All Rights Reserved.\r"},{"line_number":3,"context_line":"#\r"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba63e191_22080d91","line":1,"updated":"2016-01-20 01:25:55.000000000","message":"2016 now?","commit_id":"5e57f99da8f00062ed284a5028ae29c1e499ca64"}],"cinder/tests/unit/test_migrations.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"daf339be4ee1ee63a87c3a93c92b9afd2a6d43c8","unresolved":false,"context_lines":[{"line_number":728,"context_line":"    def _check_063(self, engine, data):"},{"line_number":729,"context_line":"        backups \u003d db_utils.get_table(engine, \u0027backups\u0027)"},{"line_number":730,"context_line":"        self.assertIsInstance(backups.c.restore_volume_id.type,"},{"line_number":731,"context_line":"                              sqlalchemy.types.VARCHAR)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_walk_versions(self):"},{"line_number":734,"context_line":"        self.walk_versions(False, False)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_a494c042","line":731,"range":{"start_line":731,"start_character":30,"end_line":731,"end_character":54},"updated":"2016-01-14 12:30:33.000000000","message":"This should be self.VARCHAR_TYPE now if you happen to make another patchset.","commit_id":"64c570497fd9b94bc13ac6cb25ab3839b12d5c25"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"668fff73f5be9c27fddde963f39fdd51ad54630b","unresolved":false,"context_lines":[{"line_number":728,"context_line":"    def _check_063(self, engine, data):"},{"line_number":729,"context_line":"        backups \u003d db_utils.get_table(engine, \u0027backups\u0027)"},{"line_number":730,"context_line":"        self.assertIsInstance(backups.c.restore_volume_id.type,"},{"line_number":731,"context_line":"                              sqlalchemy.types.VARCHAR)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_walk_versions(self):"},{"line_number":734,"context_line":"        self.walk_versions(False, False)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_d38813c9","line":731,"range":{"start_line":731,"start_character":30,"end_line":731,"end_character":54},"in_reply_to":"da6ed579_a494c042","updated":"2016-01-18 06:52:19.000000000","message":"Done","commit_id":"64c570497fd9b94bc13ac6cb25ab3839b12d5c25"}]}
