)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9cece16fe72a7ad2e7adabf14ba126426b12ef39","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     wangxiyuan \u003cwangxiyuan@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-17 09:36:52 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Roll back snapshot\u0027s status when backup failed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When create backup from snapshot, if the backup action failed"},{"line_number":10,"context_line":"in driver layer. The snapshot\u0027s status will be backing-up forever."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f013ff3_19b5d1cd","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":9},"updated":"2017-05-17 01:40:39.000000000","message":"Rollback","commit_id":"5f347e5892e727c98f48d0824489618b7302a132"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9cece16fe72a7ad2e7adabf14ba126426b12ef39","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When create backup from snapshot, if the backup action failed"},{"line_number":10,"context_line":"in driver layer. The snapshot\u0027s status will be backing-up forever."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We should roll back the snapshot\u0027s status to it\u0027s previous status"},{"line_number":13,"context_line":"(available) like volume does when backup failed."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I77ac4e546c9a33003b7a52a5c924f70ad809cac0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f013ff3_d9c6494a","line":12,"range":{"start_line":12,"start_character":10,"end_line":12,"end_character":19},"updated":"2017-05-17 01:40:39.000000000","message":"rollback","commit_id":"5f347e5892e727c98f48d0824489618b7302a132"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a4fa6099d2bba786a74a312e0ad27a86cedcffaf","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When create backup from snapshot, if the backup action failed"},{"line_number":10,"context_line":"in driver layer. The snapshot\u0027s status will be backing-up forever."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We should rollback the snapshot\u0027s status to it\u0027s previous status"},{"line_number":13,"context_line":"(available) like volume does when backup failed."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I77ac4e546c9a33003b7a52a5c924f70ad809cac0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1f013ff3_5d29f787","line":12,"range":{"start_line":12,"start_character":43,"end_line":12,"end_character":48},"updated":"2017-05-17 08:55:08.000000000","message":"nit: its","commit_id":"0c4e2fe34b26b25faac4334c61ae234759e9d8b7"}],"cinder/backup/manager.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ee00612f60f52d787555246fca3ab9fcfd575f5f","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        except Exception as err:"},{"line_number":420,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":421,"context_line":"                if snapshot_id:"},{"line_number":422,"context_line":"                    self.db.snapshot_update("},{"line_number":423,"context_line":"                        context, snapshot_id,"},{"line_number":424,"context_line":"                        {\u0027status\u0027: fields.SnapshotStatus.AVAILABLE})"},{"line_number":425,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_c4279912","line":422,"updated":"2017-05-16 11:53:28.000000000","message":"-1: We should not be using DB layer directly for new code, please use the OVO retrieved in L360.","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"817c35a516889181c5e76fa791a7ba2e4a32fec5","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        except Exception as err:"},{"line_number":420,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":421,"context_line":"                if snapshot_id:"},{"line_number":422,"context_line":"                    self.db.snapshot_update("},{"line_number":423,"context_line":"                        context, snapshot_id,"},{"line_number":424,"context_line":"                        {\u0027status\u0027: fields.SnapshotStatus.AVAILABLE})"},{"line_number":425,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_b9637ddc","line":422,"in_reply_to":"1f013ff3_c4279912","updated":"2017-05-17 01:34:35.000000000","message":"Done","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a4fa6099d2bba786a74a312e0ad27a86cedcffaf","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        except Exception as err:"},{"line_number":420,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":421,"context_line":"                if snapshot_id:"},{"line_number":422,"context_line":"                    snapshot.status \u003d fields.SnapshotStatus.AVAILABL"},{"line_number":423,"context_line":"                    snapshot.save()"},{"line_number":424,"context_line":"                else:"},{"line_number":425,"context_line":"                    self.db.volume_update("}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_9d365fe6","line":422,"range":{"start_line":422,"start_character":60,"end_line":422,"end_character":68},"updated":"2017-05-17 08:55:08.000000000","message":"-1: AVAILABLE","commit_id":"0c4e2fe34b26b25faac4334c61ae234759e9d8b7"}],"cinder/tests/unit/backup/test_backup.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c7e1cc6cd023a10c361e889be45da92ed83859cf","unresolved":false,"context_lines":[{"line_number":559,"context_line":"    def test_create_backup_with_error(self, from_snapshot):"},{"line_number":560,"context_line":"        \"\"\"Test error handling when error occurs during backup creation.\"\"\""},{"line_number":561,"context_line":"        vol_id \u003d self._create_volume_db_entry(size\u003d1)"},{"line_number":562,"context_line":"        if from_snapshot:"},{"line_number":563,"context_line":"            snapshot \u003d self._create_snapshot_db_entry(status\u003d\u0027backing-up\u0027,"},{"line_number":564,"context_line":"                                                      volume_id\u003dvol_id)"},{"line_number":565,"context_line":"            backup \u003d self._create_backup_db_entry(volume_id\u003dvol_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_0a1351b7","line":562,"range":{"start_line":562,"start_character":8,"end_line":562,"end_character":10},"updated":"2017-04-17 13:54:26.000000000","message":"I\u0027d actually rather see two separate tests for this since they are testing two different things. Generally unit tests should not need conditional logic. Will not downvote on this though.","commit_id":"d9d8ffe7388bf453c52413e7a65bb91bf85a840d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"67d710bfeaaa6a74ce0252035025c3e9705b3116","unresolved":false,"context_lines":[{"line_number":559,"context_line":"    def test_create_backup_with_error(self, from_snapshot):"},{"line_number":560,"context_line":"        \"\"\"Test error handling when error occurs during backup creation.\"\"\""},{"line_number":561,"context_line":"        vol_id \u003d self._create_volume_db_entry(size\u003d1)"},{"line_number":562,"context_line":"        if from_snapshot:"},{"line_number":563,"context_line":"            snapshot \u003d self._create_snapshot_db_entry(status\u003d\u0027backing-up\u0027,"},{"line_number":564,"context_line":"                                                      volume_id\u003dvol_id)"},{"line_number":565,"context_line":"            backup \u003d self._create_backup_db_entry(volume_id\u003dvol_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_13fb2279","line":562,"range":{"start_line":562,"start_character":8,"end_line":562,"end_character":10},"in_reply_to":"7ffa3b31_0a1351b7","updated":"2017-05-11 11:40:38.000000000","message":"Done","commit_id":"d9d8ffe7388bf453c52413e7a65bb91bf85a840d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ee00612f60f52d787555246fca3ab9fcfd575f5f","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                                              snapshot_id\u003dsnapshot.id)"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        mock_run_backup \u003d self.mock_object(self.backup_mgr, \u0027_run_backup\u0027)"},{"line_number":585,"context_line":"        mock_run_backup.side_effect \u003d FakeBackupException(str(uuid.uuid4()))"},{"line_number":586,"context_line":"        self.assertRaises(FakeBackupException,"},{"line_number":587,"context_line":"                          self.backup_mgr.create_backup,"},{"line_number":588,"context_line":"                          self.ctxt,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_24ccfd33","line":585,"updated":"2017-05-16 11:53:28.000000000","message":"nit: This could be included in the call to mock_object as a keyword argument: `side_effect\u003d...`","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"817c35a516889181c5e76fa791a7ba2e4a32fec5","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                                              snapshot_id\u003dsnapshot.id)"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        mock_run_backup \u003d self.mock_object(self.backup_mgr, \u0027_run_backup\u0027)"},{"line_number":585,"context_line":"        mock_run_backup.side_effect \u003d FakeBackupException(str(uuid.uuid4()))"},{"line_number":586,"context_line":"        self.assertRaises(FakeBackupException,"},{"line_number":587,"context_line":"                          self.backup_mgr.create_backup,"},{"line_number":588,"context_line":"                          self.ctxt,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_d9a9a9dd","line":585,"in_reply_to":"1f013ff3_24ccfd33","updated":"2017-05-17 01:34:35.000000000","message":"Done","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ee00612f60f52d787555246fca3ab9fcfd575f5f","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                          self.ctxt,"},{"line_number":589,"context_line":"                          backup)"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"        snapshot \u003d db.snapshot_get(self.ctxt, snapshot.id)"},{"line_number":592,"context_line":"        self.assertEqual(\u0027available\u0027, snapshot.status)"},{"line_number":593,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":594,"context_line":"        self.assertEqual(fields.BackupStatus.ERROR, backup[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_a4000d36","line":591,"updated":"2017-05-16 11:53:28.000000000","message":"-1: Please just use the refresh method from the snapshot OVO:\n\n snapshot.refresh()","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"817c35a516889181c5e76fa791a7ba2e4a32fec5","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                          self.ctxt,"},{"line_number":589,"context_line":"                          backup)"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"        snapshot \u003d db.snapshot_get(self.ctxt, snapshot.id)"},{"line_number":592,"context_line":"        self.assertEqual(\u0027available\u0027, snapshot.status)"},{"line_number":593,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":594,"context_line":"        self.assertEqual(fields.BackupStatus.ERROR, backup[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_59bfd9cf","line":591,"in_reply_to":"1f013ff3_a4000d36","updated":"2017-05-17 01:34:35.000000000","message":"Done","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ee00612f60f52d787555246fca3ab9fcfd575f5f","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"        snapshot \u003d db.snapshot_get(self.ctxt, snapshot.id)"},{"line_number":592,"context_line":"        self.assertEqual(\u0027available\u0027, snapshot.status)"},{"line_number":593,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":594,"context_line":"        self.assertEqual(fields.BackupStatus.ERROR, backup[\u0027status\u0027])"},{"line_number":595,"context_line":"        self.assertTrue(mock_run_backup.called)"},{"line_number":596,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_249abd13","line":593,"updated":"2017-05-16 11:53:28.000000000","message":"-1: Use refresh from backup OVO instance","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"817c35a516889181c5e76fa791a7ba2e4a32fec5","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"        snapshot \u003d db.snapshot_get(self.ctxt, snapshot.id)"},{"line_number":592,"context_line":"        self.assertEqual(\u0027available\u0027, snapshot.status)"},{"line_number":593,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":594,"context_line":"        self.assertEqual(fields.BackupStatus.ERROR, backup[\u0027status\u0027])"},{"line_number":595,"context_line":"        self.assertTrue(mock_run_backup.called)"},{"line_number":596,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_79bcd5db","line":593,"in_reply_to":"1f013ff3_249abd13","updated":"2017-05-17 01:34:35.000000000","message":"Done","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ee00612f60f52d787555246fca3ab9fcfd575f5f","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        snapshot \u003d db.snapshot_get(self.ctxt, snapshot.id)"},{"line_number":592,"context_line":"        self.assertEqual(\u0027available\u0027, snapshot.status)"},{"line_number":593,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":594,"context_line":"        self.assertEqual(fields.BackupStatus.ERROR, backup[\u0027status\u0027])"},{"line_number":595,"context_line":"        self.assertTrue(mock_run_backup.called)"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"    @mock.patch(\u0027cinder.utils.brick_get_connector_properties\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_e4a3b54e","line":594,"updated":"2017-05-16 11:53:28.000000000","message":"-1: Use attribute notation: `backup.status`","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"817c35a516889181c5e76fa791a7ba2e4a32fec5","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        snapshot \u003d db.snapshot_get(self.ctxt, snapshot.id)"},{"line_number":592,"context_line":"        self.assertEqual(\u0027available\u0027, snapshot.status)"},{"line_number":593,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":594,"context_line":"        self.assertEqual(fields.BackupStatus.ERROR, backup[\u0027status\u0027])"},{"line_number":595,"context_line":"        self.assertTrue(mock_run_backup.called)"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"    @mock.patch(\u0027cinder.utils.brick_get_connector_properties\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_99eb21db","line":594,"in_reply_to":"1f013ff3_e4a3b54e","updated":"2017-05-17 01:34:35.000000000","message":"Done","commit_id":"5d7ed56cce2e4e6d5951fdec3b930cfa64a98f9d"}]}
