)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"347d0e5056baa415ee41fc77a0a20230145e2583","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature will support when the backup restore chooses"},{"line_number":10,"context_line":"to create a new volume, record \u0027src_backup_id\u0027 in the"},{"line_number":11,"context_line":"volume metadata."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I52b91bf8fba397f710e6915ed14f5c4d62729674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_783f1edf","line":12,"updated":"2020-02-05 01:47:19.000000000","message":"Add \"Implements: blueprint add-volume-backup-id\"","commit_id":"42b0ebae5592652f497432783ab83456fb0e8795"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bbbb3ce9441dada066a86e55e17b921b9fed066c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add features for add backup id to volume metadata"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This feature will support when the backup restore chooses"},{"line_number":10,"context_line":"to create a new volume, record \u0027src_backup_id\u0027 in the"},{"line_number":11,"context_line":"volume metadata."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint add-volume-backup-id"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":32,"id":"df33271e_19688385","line":10,"range":{"start_line":10,"start_character":12,"end_line":10,"end_character":22},"updated":"2020-04-07 07:10:03.000000000","message":"this also covers existing volume that was restored previously as well","commit_id":"4863230fbdaa563ccb202d3ad05d84fc941b82f1"}],"cinder/backup/manager.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d148ecaf5cb14c9ad8f5c12f457b809f31b2eb50","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            # attribute as well."},{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"            self.db.volume_metadata_update("},{"line_number":616,"context_line":"                context,"},{"line_number":617,"context_line":"                volume.id,"},{"line_number":618,"context_line":"                {\u0027src_backup_id\u0027: backup.id},"},{"line_number":619,"context_line":"                False)"},{"line_number":620,"context_line":"        volume.save()"},{"line_number":621,"context_line":"        backup.status \u003d fields.BackupStatus.AVAILABLE"},{"line_number":622,"context_line":"        backup.save()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_7d02820f","line":619,"range":{"start_line":614,"start_character":8,"end_line":619,"end_character":22},"updated":"2020-02-07 09:44:36.000000000","message":"you should move this to api layer.\ncinder/backup/api.py   def restore()\nbecause unit test won\u0027t go to manager layer. it only exec api layer, and mock rpc layer.","commit_id":"8acd1218679ff960cd0a5c7e0c37cd69c287629e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bf126bd8d5ae12662bb435bd1a94eebf744e9695","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"            self.db.volume_metadata_update("},{"line_number":616,"context_line":"                context,"},{"line_number":617,"context_line":"                volume.id,"},{"line_number":618,"context_line":"                {\u0027src_backup_id\u0027: backup.id},"}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_e9ecdff4","line":615,"updated":"2020-02-24 20:33:21.000000000","message":"we\u0027re going to update the volume metadata with \u0027src_backup_id\u0027 even if canceled is true and the volume status has gone to ERROR -- is that correct?","commit_id":"e3a321b4092150daebffde144b29df13f73a6c07"},{"author":{"_account_id":30092,"name":"Xuan Yandong","email":"xuanyd@outlook.com","username":"xuanyandong"},"change_message_id":"b10749b3fce3f2a4e86dae5c8748903668d20886","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"            self.db.volume_metadata_update("},{"line_number":616,"context_line":"                context,"},{"line_number":617,"context_line":"                volume.id,"},{"line_number":618,"context_line":"                {\u0027src_backup_id\u0027: backup.id},"}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_5e0fe22d","line":615,"in_reply_to":"1fa4df85_e9ecdff4","updated":"2020-02-27 00:32:03.000000000","message":"if canceled and volume error，the volume is still created from this backup, although the data is not actually written.\nWhat do you recommend at this point, thank you very much.","commit_id":"e3a321b4092150daebffde144b29df13f73a6c07"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e3843f0a46938eaceb27d6ea01dbb7ca2ac82db","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            # attribute as well."},{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"            if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"                self.db.volume_metadata_update("},{"line_number":616,"context_line":"                    context,"},{"line_number":617,"context_line":"                    volume.id,"},{"line_number":618,"context_line":"                    {\u0027src_backup_id\u0027: backup.id},"},{"line_number":619,"context_line":"                    False)"},{"line_number":620,"context_line":"        volume.save()"},{"line_number":621,"context_line":"        backup.status \u003d fields.BackupStatus.AVAILABLE"},{"line_number":622,"context_line":"        backup.save()"}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_ba801e8d","line":619,"range":{"start_line":614,"start_character":0,"end_line":619,"end_character":26},"updated":"2020-02-28 15:52:35.000000000","message":"I was just asking a question on PS21, I didn\u0027t mean to imply that you should move this code into the \u0027else\u0027 block.  I think this block needs to be promoted to where it was on PS21.\n\nIn other words: yes, we do want to include the \u0027src_backup_id\u0027 in both the success and failure cases.","commit_id":"edf9e3c5d71ea5b4850085cba48954da609d3114"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7744011c6d8b13a74b419a42ff6e7bfa1734d2f7","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            # attribute as well."},{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"            self.db.volume_metadata_update("},{"line_number":616,"context_line":"                context,"},{"line_number":617,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_00b0378b","line":614,"range":{"start_line":614,"start_character":8,"end_line":614,"end_character":41},"updated":"2020-03-11 17:06:47.000000000","message":"this doesn\u0027t work when we are restoring to the same volume from which the backup was created","commit_id":"1b37875496f03a1ead494e1b522e8428aba37eda"},{"author":{"_account_id":30092,"name":"Xuan Yandong","email":"xuanyd@outlook.com","username":"xuanyandong"},"change_message_id":"23eeb22256190ca4c765f955d8a181302b43a058","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            # attribute as well."},{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"            self.db.volume_metadata_update("},{"line_number":616,"context_line":"                context,"},{"line_number":617,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_d968b522","line":614,"range":{"start_line":614,"start_character":8,"end_line":614,"end_character":41},"in_reply_to":"1fa4df85_00b0378b","updated":"2020-03-15 15:56:45.000000000","message":"I think so, if restore to the volume which the backup was created from. we needn\u0027t record the src_backup_id, I think it will work","commit_id":"1b37875496f03a1ead494e1b522e8428aba37eda"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e45c10a509b96315051977cbc648fb44955ff899","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            # attribute as well."},{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        if backup.volume_id !\u003d volume.id:"},{"line_number":615,"context_line":"            self.db.volume_metadata_update("},{"line_number":616,"context_line":"                context,"},{"line_number":617,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_fc7bcd88","line":614,"range":{"start_line":614,"start_character":8,"end_line":614,"end_character":41},"in_reply_to":"1fa4df85_d968b522","updated":"2020-03-19 12:22:19.000000000","message":"This sounds like a tests is needed to cover this then.","commit_id":"1b37875496f03a1ead494e1b522e8428aba37eda"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"37c0f073728ca82d5b76e600da8f38b5cc77494f","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            # attribute as well."},{"line_number":612,"context_line":"            if volume_previous_status \u003d\u003d fields.VolumeStatus.CREATING:"},{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        src_backup_id \u003d self.db.volume_metadata_get("},{"line_number":615,"context_line":"            context, volume_id).get(\"src_backup_id\", None)"},{"line_number":616,"context_line":"        if backup.volume_id !\u003d volume.id or ("},{"line_number":617,"context_line":"                src_backup_id and src_backup_id !\u003d backup.id):"}],"source_content_type":"text/x-python","patch_set":31,"id":"df33271e_ba58c130","line":614,"range":{"start_line":614,"start_character":8,"end_line":614,"end_character":21},"updated":"2020-04-02 13:31:09.000000000","message":"maybe name this \u0027old_src_backup_id\u0027 to make it clear what\u0027s going on here","commit_id":"034f7270d421fe5c902e5c2d7b704fa9fa60f683"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"37c0f073728ca82d5b76e600da8f38b5cc77494f","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        src_backup_id \u003d self.db.volume_metadata_get("},{"line_number":615,"context_line":"            context, volume_id).get(\"src_backup_id\", None)"},{"line_number":616,"context_line":"        if backup.volume_id !\u003d volume.id or ("},{"line_number":617,"context_line":"                src_backup_id and src_backup_id !\u003d backup.id):"},{"line_number":618,"context_line":"            self.db.volume_metadata_update("},{"line_number":619,"context_line":"                context,"},{"line_number":620,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":31,"id":"df33271e_9a017d08","line":617,"range":{"start_line":616,"start_character":0,"end_line":617,"end_character":61},"updated":"2020-04-02 13:31:09.000000000","message":"if I\u0027m reading this condition correctly, it\u0027s now possible that a *new* volume created from a backup under some circumstances *will* contain the \u0027src_backup_id\u0027 metadata.  So maybe we should just put it on all volumes restored from a backup, whether they are new or not.  Is there a good reason not to do that?","commit_id":"034f7270d421fe5c902e5c2d7b704fa9fa60f683"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7f347250aa0d2ad2328c8625241d7529fe7f9c72","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                volume[\u0027launched_at\u0027] \u003d timeutils.utcnow()"},{"line_number":614,"context_line":"        src_backup_id \u003d self.db.volume_metadata_get("},{"line_number":615,"context_line":"            context, volume_id).get(\"src_backup_id\", None)"},{"line_number":616,"context_line":"        if backup.volume_id !\u003d volume.id or ("},{"line_number":617,"context_line":"                src_backup_id and src_backup_id !\u003d backup.id):"},{"line_number":618,"context_line":"            self.db.volume_metadata_update("},{"line_number":619,"context_line":"                context,"},{"line_number":620,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":31,"id":"df33271e_47bd59b5","line":617,"range":{"start_line":616,"start_character":0,"end_line":617,"end_character":61},"in_reply_to":"df33271e_9a017d08","updated":"2020-04-02 15:42:12.000000000","message":"On rereading this, I think I was confused.  The key thing is that if a volume has src_backup_id metadata on it, this will make sure that it has the correct value, so I think this is fine.","commit_id":"034f7270d421fe5c902e5c2d7b704fa9fa60f683"}],"cinder/tests/unit/backup/test_backup.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d148ecaf5cb14c9ad8f5c12f457b809f31b2eb50","unresolved":false,"context_lines":[{"line_number":1987,"context_line":"        backup \u003d self._create_backup_db_entry(size\u003d1,"},{"line_number":1988,"context_line":"                                              status\u003d\u0027available\u0027)"},{"line_number":1989,"context_line":"        mock_get_backup_host.return_value \u003d \u0027testhost\u0027"},{"line_number":1990,"context_line":"        backup \u003d objects.Backup.get_by_id(self.ctxt, backup.id)"},{"line_number":1991,"context_line":"        restore_info \u003d self.api.restore(self.ctxt, backup.id, volume_id\u003dNone)"},{"line_number":1992,"context_line":"        new_volume \u003d objects.Volume.get_by_id(self.ctxt,"},{"line_number":1993,"context_line":"                                              restore_info[\u0027volume_id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d8f86419","line":1990,"range":{"start_line":1990,"start_character":8,"end_line":1990,"end_character":63},"updated":"2020-02-07 09:44:36.000000000","message":"no need to get again. remove","commit_id":"8acd1218679ff960cd0a5c7e0c37cd69c287629e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d148ecaf5cb14c9ad8f5c12f457b809f31b2eb50","unresolved":false,"context_lines":[{"line_number":1988,"context_line":"                                              status\u003d\u0027available\u0027)"},{"line_number":1989,"context_line":"        mock_get_backup_host.return_value \u003d \u0027testhost\u0027"},{"line_number":1990,"context_line":"        backup \u003d objects.Backup.get_by_id(self.ctxt, backup.id)"},{"line_number":1991,"context_line":"        restore_info \u003d self.api.restore(self.ctxt, backup.id, volume_id\u003dNone)"},{"line_number":1992,"context_line":"        new_volume \u003d objects.Volume.get_by_id(self.ctxt,"},{"line_number":1993,"context_line":"                                              restore_info[\u0027volume_id\u0027])"},{"line_number":1994,"context_line":"        self.assertEqual(volume_id, backup.restore_volume_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d82144a3","line":1991,"range":{"start_line":1991,"start_character":71,"end_line":1991,"end_character":77},"updated":"2020-02-07 09:44:36.000000000","message":"volume_id can not be None.\nself.api.restore(self.ctxt, backup.id, volume_id)","commit_id":"8acd1218679ff960cd0a5c7e0c37cd69c287629e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d148ecaf5cb14c9ad8f5c12f457b809f31b2eb50","unresolved":false,"context_lines":[{"line_number":1990,"context_line":"        backup \u003d objects.Backup.get_by_id(self.ctxt, backup.id)"},{"line_number":1991,"context_line":"        restore_info \u003d self.api.restore(self.ctxt, backup.id, volume_id\u003dNone)"},{"line_number":1992,"context_line":"        new_volume \u003d objects.Volume.get_by_id(self.ctxt,"},{"line_number":1993,"context_line":"                                              restore_info[\u0027volume_id\u0027])"},{"line_number":1994,"context_line":"        self.assertEqual(volume_id, backup.restore_volume_id)"},{"line_number":1995,"context_line":"        self.assertEqual(backup.id, new_volume.metadata[\"src_backup_id\"])"},{"line_number":1996,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_382ad877","line":1993,"range":{"start_line":1993,"start_character":46,"end_line":1993,"end_character":71},"updated":"2020-02-07 09:44:36.000000000","message":"volume_id","commit_id":"8acd1218679ff960cd0a5c7e0c37cd69c287629e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"052dbfe18c3757b3d079ce4b2c94fdef76c414d5","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        backup \u003d self._create_backup_db_entry("},{"line_number":1288,"context_line":"            status\u003dfields.BackupStatus.RESTORING, volume_id\u003dvol_id)"},{"line_number":1289,"context_line":"        vol2_id \u003d self._create_volume_db_entry(status\u003d\u0027restoring-backup\u0027,"},{"line_number":1290,"context_line":"                                              size\u003dvol_size)"},{"line_number":1291,"context_line":"        backup2 \u003d self._create_backup_db_entry("},{"line_number":1292,"context_line":"            status\u003dfields.BackupStatus.RESTORING, volume_id\u003dvol2_id)"},{"line_number":1293,"context_line":"        vol2 \u003d objects.Volume.get_by_id(self.ctxt, vol2_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"df33271e_3346c9c1","line":1290,"updated":"2020-04-01 02:49:12.000000000","message":"E128 continuation line under-indented for visual indent","commit_id":"f7e2caeb9eea83b2e71c7a21e05a5f00927eb9ac"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bbbb3ce9441dada066a86e55e17b921b9fed066c","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"        db.backup_update(self.ctxt, backup.id, {\"status\": \"restoring\"})"},{"line_number":1314,"context_line":"        vol.status \u003d \u0027available\u0027"},{"line_number":1315,"context_line":"        vol.obj_reset_changes()"},{"line_number":1316,"context_line":"        with mock.patch(\u0027os.name\u0027, os_name):"},{"line_number":1317,"context_line":"            self.backup_mgr.restore_backup(self.ctxt, backup, vol2_id)"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"        vol2.status \u003d \u0027restoring-backup\u0027"},{"line_number":1320,"context_line":"        db.volume_update(self.ctxt, vol2.id, {\"status\": \"restoring-backup\"})"},{"line_number":1321,"context_line":"        vol2.obj_reset_changes()"},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"        with mock.patch(\u0027os.name\u0027, os_name):"},{"line_number":1324,"context_line":"            self.backup_mgr.restore_backup(self.ctxt, backup2, vol2_id)"}],"source_content_type":"text/x-python","patch_set":32,"id":"df33271e_995c93ee","line":1321,"range":{"start_line":1316,"start_character":0,"end_line":1321,"end_character":32},"updated":"2020-04-07 07:10:03.000000000","message":"can we have an assert after this to check if vol2 is having src_backup_id of backup1\nand then after second restore it gets updated to backup2","commit_id":"4863230fbdaa563ccb202d3ad05d84fc941b82f1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bbbb3ce9441dada066a86e55e17b921b9fed066c","unresolved":false,"context_lines":[{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"        vol2.status \u003d \u0027available\u0027"},{"line_number":1327,"context_line":"        vol2.obj_reset_changes()"},{"line_number":1328,"context_line":"        vol \u003d objects.Volume.get_by_id(self.ctxt, new_vol_id)"},{"line_number":1329,"context_line":"        vol2 \u003d objects.Volume.get_by_id(self.ctxt, vol2_id)"},{"line_number":1330,"context_line":"        self.assertEqual(\u0027available\u0027, vol[\u0027status\u0027])"},{"line_number":1331,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":1332,"context_line":"        self.assertEqual(backup.id, vol.metadata[\"src_backup_id\"])"}],"source_content_type":"text/x-python","patch_set":32,"id":"df33271e_d9bf3bfa","line":1329,"range":{"start_line":1328,"start_character":8,"end_line":1329,"end_character":59},"updated":"2020-04-07 07:10:03.000000000","message":"use vol.refresh() and vol2.refresh() here","commit_id":"4863230fbdaa563ccb202d3ad05d84fc941b82f1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bbbb3ce9441dada066a86e55e17b921b9fed066c","unresolved":false,"context_lines":[{"line_number":1328,"context_line":"        vol \u003d objects.Volume.get_by_id(self.ctxt, new_vol_id)"},{"line_number":1329,"context_line":"        vol2 \u003d objects.Volume.get_by_id(self.ctxt, vol2_id)"},{"line_number":1330,"context_line":"        self.assertEqual(\u0027available\u0027, vol[\u0027status\u0027])"},{"line_number":1331,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":1332,"context_line":"        self.assertEqual(backup.id, vol.metadata[\"src_backup_id\"])"},{"line_number":1333,"context_line":"        self.assertEqual(backup2.id, vol2.metadata[\"src_backup_id\"])"},{"line_number":1334,"context_line":"        self.assertEqual(fields.BackupStatus.AVAILABLE, backup[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"df33271e_9943f313","line":1331,"range":{"start_line":1331,"start_character":8,"end_line":1331,"end_character":52},"updated":"2020-04-07 07:10:03.000000000","message":"backup.refresh()","commit_id":"4863230fbdaa563ccb202d3ad05d84fc941b82f1"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"5cf4233e6ea2639a3ee4446fe58868d8c0103ca5","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"                 \"successfully.\","},{"line_number":1075,"context_line":"                 {\u0027volume_id\u0027: volume.id,"},{"line_number":1076,"context_line":"                  \u0027backup_id\u0027: backup_id})"},{"line_number":1077,"context_line":"        self.db.volume_metadata_update("},{"line_number":1078,"context_line":"            context,"},{"line_number":1079,"context_line":"            volume.id,"},{"line_number":1080,"context_line":"            {\u0027src_backup_id\u0027: backup.id},"},{"line_number":1081,"context_line":"            False)"},{"line_number":1082,"context_line":"        return ret, need_update_volume"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    def _create_raw_volume(self, context, volume, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d894e49a","line":1081,"range":{"start_line":1077,"start_character":8,"end_line":1081,"end_character":18},"updated":"2020-02-07 09:56:22.000000000","message":"you should add an unit test about create volume from backup.\nnow you only add unit test about restore backup to volume.","commit_id":"8acd1218679ff960cd0a5c7e0c37cd69c287629e"}],"releasenotes/notes/bp-add-volume-backup-id-e10d053638cb2e78.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bbbb3ce9441dada066a86e55e17b921b9fed066c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add the property ``src_backup_id`` to the volume\u0027s metadata,"},{"line_number":5,"context_line":"    to record from which backup the new volume was created."},{"line_number":6,"context_line":"    When restoring from a chain of incremental backups, ``src_backup_id``"},{"line_number":7,"context_line":"    is set to the last incremental backup used for the restore."}],"source_content_type":"text/x-yaml","patch_set":32,"id":"df33271e_599debb9","line":5,"range":{"start_line":5,"start_character":36,"end_line":5,"end_character":46},"updated":"2020-04-07 07:10:03.000000000","message":"this is now true for existing restored volumes as well.","commit_id":"4863230fbdaa563ccb202d3ad05d84fc941b82f1"}]}
