)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"0afdb4b8e27f76a9ffa56769ca208b5e653aacf8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This patch is uploaded, since there was a bug [1] while"},{"line_number":12,"context_line":"creating an incremental backup while the backend is ceph."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1] https://bugs.launchpad.net/cinder/+bug/1763399"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I44af9c242219567c4f995693bf52ee4f1d0a89c6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9f6a8fd7_daa466a8","line":14,"updated":"2018-04-26 07:00:39.000000000","message":"I think it could be added \n\n Related-Bug: #1763399","commit_id":"c74ea923c824a3d87038346a45cdf07b41697582"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"0901fc688a0ab085ef3582e560bc665258f86631","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This patch is uploaded, since there was a bug [1] while"},{"line_number":12,"context_line":"creating an incremental backup while the backend is ceph."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1] https://bugs.launchpad.net/cinder/+bug/1763399"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I44af9c242219567c4f995693bf52ee4f1d0a89c6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9f6a8fd7_fa528a66","line":14,"in_reply_to":"9f6a8fd7_daa466a8","updated":"2018-04-26 07:18:10.000000000","message":"Thanks for your comments\nDone","commit_id":"c74ea923c824a3d87038346a45cdf07b41697582"}],"tempest/api/volume/test_volumes_backup.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"52ae38be698d048f10f0ed28cf043aad0f2a079c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.assertEqual(True, backup2_info[\u0027is_incremental\u0027])"},{"line_number":179,"context_line":"        self.assertEqual(False, backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":182,"context_line":"        backup_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":183,"context_line":"        self.assertEqual(True, backup_info[\u0027has_dependent_backups\u0027])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class VolumesBackupsV39Test(base.BaseVolumeTest):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_4a8ec8d0","line":183,"range":{"start_line":181,"start_character":0,"end_line":183,"end_character":68},"updated":"2018-04-19 22:13:04.000000000","message":"Maybe this point is not due to this patch, but I want to clarify this question.\n\nAccording to https://developer.openstack.org/api-ref/block-storage/v3/index.html#show-backup-detail has_dependent_backups is like\n\n If this value is true, the backup depends on other backups.\n\nThat means in this case backup2 depends on backup1 (parent) and backup2\u0027s has_dependent_backups should be true, because backup1 is created firstly.\nHowever, in this test backup2\u0027s has_dependent_backups is true instead. So I feel the API document is different from the actual behavior.","commit_id":"8a46004603da611f2cca508f64d97cf4fcfc7add"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"545e4408c4f24f8555a0bf2d3b2764659faeb709","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self.assertEqual(True, backup2_info[\u0027is_incremental\u0027])"},{"line_number":179,"context_line":"        self.assertEqual(False, backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":182,"context_line":"        backup_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":183,"context_line":"        self.assertEqual(True, backup_info[\u0027has_dependent_backups\u0027])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class VolumesBackupsV39Test(base.BaseVolumeTest):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_ecdb13ea","line":183,"range":{"start_line":181,"start_character":0,"end_line":183,"end_character":68},"in_reply_to":"9f6a8fd7_4a8ec8d0","updated":"2018-04-22 07:31:17.000000000","message":"Right, I have reported a bug on cinder api documentation.\nhttps://bugs.launchpad.net/cinder/+bug/1766057","commit_id":"8a46004603da611f2cca508f64d97cf4fcfc7add"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"0afdb4b8e27f76a9ffa56769ca208b5e653aacf8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # Get all backups with detail"},{"line_number":87,"context_line":"        backups \u003d self.backups_client.list_backups("},{"line_number":88,"context_line":"            detail\u003dTrue)[\u0027backups\u0027]"},{"line_number":89,"context_line":"        for backup1_info in backups:"},{"line_number":90,"context_line":"            self.assertIn(\u0027created_at\u0027, backup1_info)"},{"line_number":91,"context_line":"            self.assertIn(\u0027links\u0027, backup1_info)"},{"line_number":92,"context_line":"        self.assertIn((backup[\u0027name\u0027], backup[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_fa9fea4c","line":89,"updated":"2018-04-26 07:00:39.000000000","message":"Why do we need this change? `backup_info` is conflicted in somewhere?","commit_id":"c74ea923c824a3d87038346a45cdf07b41697582"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"0901fc688a0ab085ef3582e560bc665258f86631","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # Get all backups with detail"},{"line_number":87,"context_line":"        backups \u003d self.backups_client.list_backups("},{"line_number":88,"context_line":"            detail\u003dTrue)[\u0027backups\u0027]"},{"line_number":89,"context_line":"        for backup1_info in backups:"},{"line_number":90,"context_line":"            self.assertIn(\u0027created_at\u0027, backup1_info)"},{"line_number":91,"context_line":"            self.assertIn(\u0027links\u0027, backup1_info)"},{"line_number":92,"context_line":"        self.assertIn((backup[\u0027name\u0027], backup[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_3a0fa288","line":89,"in_reply_to":"9f6a8fd7_fa9fea4c","updated":"2018-04-26 07:18:10.000000000","message":"Sorry my mistake, unintentional change","commit_id":"c74ea923c824a3d87038346a45cdf07b41697582"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"0afdb4b8e27f76a9ffa56769ca208b5e653aacf8","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Create an incremental backup"},{"line_number":170,"context_line":"        backup2 \u003d self.backups_client.create_backup("},{"line_number":171,"context_line":"            volume_id\u003dvolume[\u0027id\u0027], incremental\u003d\u0027true\u0027, force\u003dTrue)[\u0027backup\u0027]"},{"line_number":172,"context_line":"        self.addCleanup(self._delete_backup, backup2[\u0027id\u0027])"},{"line_number":173,"context_line":"        waiters.wait_for_volume_resource_status(self.backups_client,"},{"line_number":174,"context_line":"                                                backup2[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_9aaa6e6e","line":171,"updated":"2018-04-26 07:00:39.000000000","message":"I think the parameter `incremental` should be a boolean value not string according to the document. Why not use a boolean value here?","commit_id":"c74ea923c824a3d87038346a45cdf07b41697582"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"0901fc688a0ab085ef3582e560bc665258f86631","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Create an incremental backup"},{"line_number":170,"context_line":"        backup2 \u003d self.backups_client.create_backup("},{"line_number":171,"context_line":"            volume_id\u003dvolume[\u0027id\u0027], incremental\u003d\u0027true\u0027, force\u003dTrue)[\u0027backup\u0027]"},{"line_number":172,"context_line":"        self.addCleanup(self._delete_backup, backup2[\u0027id\u0027])"},{"line_number":173,"context_line":"        waiters.wait_for_volume_resource_status(self.backups_client,"},{"line_number":174,"context_line":"                                                backup2[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_da578657","line":171,"in_reply_to":"9f6a8fd7_9aaa6e6e","updated":"2018-04-26 07:18:10.000000000","message":"Done","commit_id":"c74ea923c824a3d87038346a45cdf07b41697582"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1a026f4ec67d58f6b65b2c5a70f140e35720dadb","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Validate backup details"},{"line_number":165,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":166,"context_line":"        self.assertEqual(False, backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":167,"context_line":"        self.assertEqual(False, backup1_info[\u0027is_incremental\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Create an incremental backup"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_39621918","line":166,"range":{"start_line":166,"start_character":8,"end_line":166,"end_character":33},"updated":"2018-04-29 17:17:33.000000000","message":"Better to use self.assertFalse","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"79fef8b86d4e3da18434d4713a35418a5ad025b7","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Validate backup details"},{"line_number":165,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":166,"context_line":"        self.assertEqual(False, backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":167,"context_line":"        self.assertEqual(False, backup1_info[\u0027is_incremental\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Create an incremental backup"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_d4d88480","line":166,"range":{"start_line":166,"start_character":8,"end_line":166,"end_character":33},"in_reply_to":"9f6a8fd7_39621918","updated":"2018-04-29 19:13:16.000000000","message":"Done","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1a026f4ec67d58f6b65b2c5a70f140e35720dadb","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # Validate backup details"},{"line_number":165,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":166,"context_line":"        self.assertEqual(False, backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":167,"context_line":"        self.assertEqual(False, backup1_info[\u0027is_incremental\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Create an incremental backup"},{"line_number":170,"context_line":"        backup2 \u003d self.backups_client.create_backup("}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_5967cd26","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":31},"updated":"2018-04-29 17:17:33.000000000","message":"Ditto","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"79fef8b86d4e3da18434d4713a35418a5ad025b7","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # Validate backup details"},{"line_number":165,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":166,"context_line":"        self.assertEqual(False, backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":167,"context_line":"        self.assertEqual(False, backup1_info[\u0027is_incremental\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Create an incremental backup"},{"line_number":170,"context_line":"        backup2 \u003d self.backups_client.create_backup("}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_74e5f837","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":31},"in_reply_to":"9f6a8fd7_5967cd26","updated":"2018-04-29 19:13:16.000000000","message":"Done","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1a026f4ec67d58f6b65b2c5a70f140e35720dadb","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # Validate incremental backup details"},{"line_number":177,"context_line":"        backup2_info \u003d self.backups_client.show_backup(backup2[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        self.assertEqual(True, backup2_info[\u0027is_incremental\u0027])"},{"line_number":179,"context_line":"        self.assertEqual(False, backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":182,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_197155e1","line":179,"updated":"2018-04-29 17:17:33.000000000","message":"See above","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"79fef8b86d4e3da18434d4713a35418a5ad025b7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # Validate incremental backup details"},{"line_number":177,"context_line":"        backup2_info \u003d self.backups_client.show_backup(backup2[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        self.assertEqual(True, backup2_info[\u0027is_incremental\u0027])"},{"line_number":179,"context_line":"        self.assertEqual(False, backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":182,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_94e20c2f","line":179,"in_reply_to":"9f6a8fd7_197155e1","updated":"2018-04-29 19:13:16.000000000","message":"Done","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1a026f4ec67d58f6b65b2c5a70f140e35720dadb","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":182,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":183,"context_line":"        self.assertEqual(True, backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class VolumesBackupsV39Test(base.BaseVolumeTest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_b975c9ce","line":183,"updated":"2018-04-29 17:17:33.000000000","message":"See above","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"79fef8b86d4e3da18434d4713a35418a5ad025b7","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":182,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":183,"context_line":"        self.assertEqual(True, backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class VolumesBackupsV39Test(base.BaseVolumeTest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_54d6b451","line":183,"in_reply_to":"9f6a8fd7_b975c9ce","updated":"2018-04-29 19:13:16.000000000","message":"Done","commit_id":"7b5638c6e4db6eebc6bd9330517e018399598f39"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e97f13358b4663d7711a3883d33bd0db2004b8b4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                                \u0027available\u0027)"},{"line_number":51,"context_line":"        return restored_volume"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _delete_backup(self, backup_id):"},{"line_number":54,"context_line":"        self.backups_client.delete_backup(backup_id)"},{"line_number":55,"context_line":"        self.backups_client.wait_for_resource_deletion(backup_id)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_ced8f080","line":53,"updated":"2018-04-30 07:38:55.000000000","message":"Would it make sense to define this in the base class and also use it for the create_backup() function?","commit_id":"e0a9d42975677efba7a8a81316fa6d1f41523992"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"8173c6245de66fd893de9ee155c1d2f90c3a3024","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                                \u0027available\u0027)"},{"line_number":51,"context_line":"        return restored_volume"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _delete_backup(self, backup_id):"},{"line_number":54,"context_line":"        self.backups_client.delete_backup(backup_id)"},{"line_number":55,"context_line":"        self.backups_client.wait_for_resource_deletion(backup_id)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_2e8e4c27","line":53,"in_reply_to":"9f6a8fd7_ced8f080","updated":"2018-04-30 09:36:39.000000000","message":"There are only two tests that need it, so I don\u0027t think it is justified to move it under base class.","commit_id":"e0a9d42975677efba7a8a81316fa6d1f41523992"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e97f13358b4663d7711a3883d33bd0db2004b8b4","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _delete_backup(self, backup_id):"},{"line_number":54,"context_line":"        self.backups_client.delete_backup(backup_id)"},{"line_number":55,"context_line":"        self.backups_client.wait_for_resource_deletion(backup_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @testtools.skipIf(CONF.volume.storage_protocol \u003d\u003d \u0027ceph\u0027,"},{"line_number":58,"context_line":"                      \u0027ceph does not support arbitrary container names\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_0ed02850","line":55,"updated":"2018-04-30 07:38:55.000000000","message":"Is the order in which the cleanups are handled guaranteed? Otherwise this may not be as useful as it looks like.","commit_id":"e0a9d42975677efba7a8a81316fa6d1f41523992"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"8173c6245de66fd893de9ee155c1d2f90c3a3024","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _delete_backup(self, backup_id):"},{"line_number":54,"context_line":"        self.backups_client.delete_backup(backup_id)"},{"line_number":55,"context_line":"        self.backups_client.wait_for_resource_deletion(backup_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @testtools.skipIf(CONF.volume.storage_protocol \u003d\u003d \u0027ceph\u0027,"},{"line_number":58,"context_line":"                      \u0027ceph does not support arbitrary container names\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_c46531e3","line":55,"in_reply_to":"9f6a8fd7_0ed02850","updated":"2018-04-30 09:36:39.000000000","message":"We have to wait for the deletion procedure of the incremental backup to finish in case the deletion procedure of the base backup will fail.","commit_id":"e0a9d42975677efba7a8a81316fa6d1f41523992"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e97f13358b4663d7711a3883d33bd0db2004b8b4","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # Attach volume to the server"},{"line_number":159,"context_line":"        self.attach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        # Create a backup to the attached volume"},{"line_number":162,"context_line":"        backup1 \u003d self.create_backup(volume[\u0027id\u0027], force\u003dTrue)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Validate backup details"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_aead7ceb","line":161,"updated":"2018-04-30 07:38:55.000000000","message":"\"to\" sounds strange here to me, \"of\" or \"from\" might be better.","commit_id":"e0a9d42975677efba7a8a81316fa6d1f41523992"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"8173c6245de66fd893de9ee155c1d2f90c3a3024","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # Attach volume to the server"},{"line_number":159,"context_line":"        self.attach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        # Create a backup to the attached volume"},{"line_number":162,"context_line":"        backup1 \u003d self.create_backup(volume[\u0027id\u0027], force\u003dTrue)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Validate backup details"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f6a8fd7_0ee108ff","line":161,"in_reply_to":"9f6a8fd7_aead7ceb","updated":"2018-04-30 09:36:39.000000000","message":"Done","commit_id":"e0a9d42975677efba7a8a81316fa6d1f41523992"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fe306c8a7855ef3c79aa12d1c650a0bbb3f7edce","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # Validate incremental backup details"},{"line_number":178,"context_line":"        backup2_info \u003d self.backups_client.show_backup(backup2[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":179,"context_line":"        self.assertTrue(backup2_info[\u0027is_incremental\u0027])"},{"line_number":180,"context_line":"        self.assertFalse(backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":183,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_76809c8c","line":180,"range":{"start_line":179,"start_character":0,"end_line":180,"end_character":63},"updated":"2018-05-07 09:03:11.000000000","message":"flag checks is all ok which i think can be covered by cinder unit tests.\n\ncan we actually check if backend does incremental backup or not by comparing the size of backup file etc. ?","commit_id":"7c457b68217e9619589135565b8e695d0fd4614f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3334d3d997fcbd7c36322e1c455c317cb598aa2d","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # Validate incremental backup details"},{"line_number":178,"context_line":"        backup2_info \u003d self.backups_client.show_backup(backup2[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":179,"context_line":"        self.assertTrue(backup2_info[\u0027is_incremental\u0027])"},{"line_number":180,"context_line":"        self.assertFalse(backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":183,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d102be0b","line":180,"range":{"start_line":179,"start_character":0,"end_line":180,"end_character":63},"in_reply_to":"5f7c97a3_4b77dcd5","updated":"2018-05-08 13:34:33.000000000","message":"yea, i agree about bug things which are just flags setting but as we are adding integrated tests we should have more verification.","commit_id":"7c457b68217e9619589135565b8e695d0fd4614f"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"46001837598113b3c18987284f8e13862db3324a","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # Validate incremental backup details"},{"line_number":178,"context_line":"        backup2_info \u003d self.backups_client.show_backup(backup2[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":179,"context_line":"        self.assertTrue(backup2_info[\u0027is_incremental\u0027])"},{"line_number":180,"context_line":"        self.assertFalse(backup2_info[\u0027has_dependent_backups\u0027])"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":183,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_4b77dcd5","line":180,"range":{"start_line":179,"start_character":0,"end_line":180,"end_character":63},"in_reply_to":"5f7c97a3_76809c8c","updated":"2018-05-08 12:31:18.000000000","message":"Actually, we can check incremental backup by creating files and verify the delta after we restore the incremental backup.\nBut the reason i have uploaded this patch is the bug in ceph.","commit_id":"7c457b68217e9619589135565b8e695d0fd4614f"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"945f3a70fc2a096e0e7a132ed90e7a6e9438ab34","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":183,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":184,"context_line":"        self.assertTrue(backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"class VolumesBackupsV39Test(base.BaseVolumeTest):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d021784f","line":184,"updated":"2018-05-07 05:36:27.000000000","message":"Can we verify the \u0027is_incremental\u0027 here, too?","commit_id":"7c457b68217e9619589135565b8e695d0fd4614f"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"46001837598113b3c18987284f8e13862db3324a","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Verify that the parent backup has a dependent backup"},{"line_number":183,"context_line":"        backup1_info \u003d self.backups_client.show_backup(backup1[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":184,"context_line":"        self.assertTrue(backup1_info[\u0027has_dependent_backups\u0027])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"class VolumesBackupsV39Test(base.BaseVolumeTest):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_0be564a8","line":184,"in_reply_to":"5f7c97a3_d021784f","updated":"2018-05-08 12:31:18.000000000","message":"I don\u0027t sure it is necessary.","commit_id":"7c457b68217e9619589135565b8e695d0fd4614f"}]}
