)]}'
{"cinder/backup/drivers/ceph.py":[{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"9a3315df7a73d8a8b461324817ba11951409c069","unresolved":false,"context_lines":[{"line_number":932,"context_line":"        if backup.parent_id:"},{"line_number":933,"context_line":"            do_full_backup \u003d False"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        if do_full_backup:"},{"line_number":936,"context_line":"            try:"},{"line_number":937,"context_line":"                self._full_backup(backup, volume_file, volume.name, length)"},{"line_number":938,"context_line":"            except exception.BackupOperationError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_150fa08b","line":935,"updated":"2018-10-23 03:16:20.000000000","message":"Do you think we should also check \u0027not self._file_is_rbd(volume_file)\u0027 right here?","commit_id":"4930190880fdcdda7cf00c8d1b8c335fc3643545"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"b77c163d406694925e105b764b43759a12bc152b","unresolved":false,"context_lines":[{"line_number":932,"context_line":"        if backup.parent_id:"},{"line_number":933,"context_line":"            do_full_backup \u003d False"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        if do_full_backup:"},{"line_number":936,"context_line":"            try:"},{"line_number":937,"context_line":"                self._full_backup(backup, volume_file, volume.name, length)"},{"line_number":938,"context_line":"            except exception.BackupOperationError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_67be5c01","line":935,"in_reply_to":"3f79a3b5_150fa08b","updated":"2018-10-23 15:56:08.000000000","message":"Yes, :face_palm: I have to check if \u0027not self._file_is_rbd(volume_file)\u0027 . I\u0027ll update de patch.","commit_id":"4930190880fdcdda7cf00c8d1b8c335fc3643545"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"9a3315df7a73d8a8b461324817ba11951409c069","unresolved":false,"context_lines":[{"line_number":950,"context_line":"                    do_full_backup \u003d True"},{"line_number":951,"context_line":"            else:"},{"line_number":952,"context_line":"                LOG.debug(\"Volume file is NOT RBD: will do full backup.\")"},{"line_number":953,"context_line":"                do_full_backup \u003d True"},{"line_number":954,"context_line":""},{"line_number":955,"context_line":"        if backup_metadata:"},{"line_number":956,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b51d8cc0","line":953,"updated":"2018-10-23 03:16:20.000000000","message":"which line of code will do the full back up after this line? that\u0027s reason why I\u0027m asking about \"not is rbd\" on above comment?","commit_id":"4930190880fdcdda7cf00c8d1b8c335fc3643545"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd550fe236a21b596498290917a406a947b3bdd6","unresolved":false,"context_lines":[{"line_number":910,"context_line":"    def backup(self, backup, volume_file, backup_metadata\u003dTrue):"},{"line_number":911,"context_line":"        \"\"\"Backup volume and metadata (if available) to Ceph object store."},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        If the source volume is an RBD and we use the `--incremental` cli"},{"line_number":914,"context_line":"        option we will attempt to do an incremental/differential backup,"},{"line_number":915,"context_line":"        otherwise a full copy is performed."},{"line_number":916,"context_line":"        If this fails we will attempt to fall back to full copy."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_3ac12b82","line":913,"updated":"2018-10-25 10:51:00.000000000","message":"nit: We should always refer to the REST API interface, not the CLI interface, as the call could be coming from different places.","commit_id":"6b2e12854c0d50d1405b381c2c9e7764e8dfd01a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd550fe236a21b596498290917a406a947b3bdd6","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        volume_file.seek(0)"},{"line_number":928,"context_line":"        length \u003d self._get_volume_size_gb(volume)"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        do_full_backup \u003d True"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"        # When backup has parent_id is because the incremental param was used"},{"line_number":933,"context_line":"        if backup.parent_id:"},{"line_number":934,"context_line":"            do_full_backup \u003d False"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        if self._file_is_rbd(volume_file) and not do_full_backup:"},{"line_number":937,"context_line":"            # If volume an RBD, attempt incremental backup."},{"line_number":938,"context_line":"            LOG.debug(\"Volume file is RBD: attempting incremental backup.\")"},{"line_number":939,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_da6037a7","line":936,"range":{"start_line":930,"start_character":0,"end_line":936,"end_character":65},"updated":"2018-10-25 10:51:00.000000000","message":"-1: Replace all this with\n\n   if backup.parent_id and self._file_is_rbd(volume_file):","commit_id":"6b2e12854c0d50d1405b381c2c9e7764e8dfd01a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5cefa5d5d13f6c6ed3de5f4a7b2244307a70d434","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    Backups may be stored in their own pool or even cluster. Store location is"},{"line_number":170,"context_line":"    defined by the Ceph conf file and service config options supplied."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    Only If the incremental option is specified and the source volume is itself"},{"line_number":173,"context_line":"    an RBD volume, the backup will be performed using incremental differential"},{"line_number":174,"context_line":"    backups which *should* give a performance gain."},{"line_number":175,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_ac4f8cbd","line":172,"range":{"start_line":172,"start_character":9,"end_line":172,"end_character":11},"updated":"2018-11-05 10:53:49.000000000","message":"nit: if","commit_id":"584e006f3eb650acd11a082097b06c3759c8fde3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5cefa5d5d13f6c6ed3de5f4a7b2244307a70d434","unresolved":false,"context_lines":[{"line_number":932,"context_line":"            LOG.debug(\"Volume file is RBD: attempting incremental backup.\")"},{"line_number":933,"context_line":"            try:"},{"line_number":934,"context_line":"                updates \u003d self._backup_rbd(backup, volume_file,"},{"line_number":935,"context_line":"                                           volume.name, length)"},{"line_number":936,"context_line":"            except exception.BackupRBDOperationFailed:"},{"line_number":937,"context_line":"                LOG.debug(\"Forcing full backup of volume %s.\", volume.id)"},{"line_number":938,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_cc7d28c4","line":935,"updated":"2018-11-05 10:53:49.000000000","message":"-1: We just need to add here and then we don\u0027t need to change anything else.\n\n    do_full_backup \u003d False","commit_id":"584e006f3eb650acd11a082097b06c3759c8fde3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5cefa5d5d13f6c6ed3de5f4a7b2244307a70d434","unresolved":false,"context_lines":[{"line_number":935,"context_line":"                                           volume.name, length)"},{"line_number":936,"context_line":"            except exception.BackupRBDOperationFailed:"},{"line_number":937,"context_line":"                LOG.debug(\"Forcing full backup of volume %s.\", volume.id)"},{"line_number":938,"context_line":"                try:"},{"line_number":939,"context_line":"                    self._full_backup(backup, volume_file, volume.name, length)"},{"line_number":940,"context_line":"                except exception.BackupOperationError:"},{"line_number":941,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":942,"context_line":"                        self.delete_backup(backup)"},{"line_number":943,"context_line":"        else:"},{"line_number":944,"context_line":"            LOG.debug(\"Volume file is NOT RBD: will do full backup.\")"},{"line_number":945,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_ccf8c84c","line":942,"range":{"start_line":938,"start_character":1,"end_line":942,"end_character":50},"updated":"2018-11-05 10:53:49.000000000","message":"-1: This can be left as it was, setting the do_full_backup \u003d True","commit_id":"584e006f3eb650acd11a082097b06c3759c8fde3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5cefa5d5d13f6c6ed3de5f4a7b2244307a70d434","unresolved":false,"context_lines":[{"line_number":941,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":942,"context_line":"                        self.delete_backup(backup)"},{"line_number":943,"context_line":"        else:"},{"line_number":944,"context_line":"            LOG.debug(\"Volume file is NOT RBD: will do full backup.\")"},{"line_number":945,"context_line":"            try:"},{"line_number":946,"context_line":"                self._full_backup(backup, volume_file, volume.name, length)"},{"line_number":947,"context_line":"            except exception.BackupOperationError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_ec98241b","line":944,"updated":"2018-11-05 10:53:49.000000000","message":"-1: This can be left as it was, setting the\n\n        do_full_backup \u003d True\n\n    if do_full_backup:","commit_id":"584e006f3eb650acd11a082097b06c3759c8fde3"},{"author":{"_account_id":27190,"name":"Leopard Ma","email":"mabao@inspur.com","username":"LeopardMa"},"change_message_id":"182033007f4f26ff7c789baa0ff1b8fb3507a1ac","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        volume_file.seek(0)"},{"line_number":928,"context_line":"        length \u003d self._get_volume_size_gb(volume)"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        if backup.parent_id and self._file_is_rbd(volume_file):"},{"line_number":931,"context_line":"            # If volume an RBD, attempt incremental backup."},{"line_number":932,"context_line":"            LOG.debug(\"Volume file is RBD: attempting incremental backup.\")"},{"line_number":933,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_e2f9af4e","line":930,"range":{"start_line":930,"start_character":8,"end_line":930,"end_character":27},"updated":"2018-11-27 01:24:15.000000000","message":"Although ceph driver respect the `--incremental` option for backups,another problem of first incremental backup created is a full backup will arise,do you have a good solution?","commit_id":"2f63b7ff06eb0f766b90fa76fea9d1ac14bb547c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"116903353a12674b5f056c38470c0796f5395bfd","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        volume_file.seek(0)"},{"line_number":928,"context_line":"        length \u003d self._get_volume_size_gb(volume)"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        if backup.parent_id and self._file_is_rbd(volume_file):"},{"line_number":931,"context_line":"            # If volume an RBD, attempt incremental backup."},{"line_number":932,"context_line":"            LOG.debug(\"Volume file is RBD: attempting incremental backup.\")"},{"line_number":933,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_8773264f","line":930,"range":{"start_line":930,"start_character":8,"end_line":930,"end_character":27},"in_reply_to":"3f79a3b5_e2f9af4e","updated":"2018-11-27 09:05:14.000000000","message":"I don\u0027t understand the question.  If you don\u0027t have a full backup and request an incremental one through the CLI using --incremental, you will get an error: \"No backups available to do an incremental backup\" on the API service, and it will never reach the driver code.\n\nReasons why you could jump to the full backup even if the user requested incremental are:\n\n- A bug\n- Somebody removed data on the backend (volume snapshot or backup image)","commit_id":"2f63b7ff06eb0f766b90fa76fea9d1ac14bb547c"}],"cinder/tests/unit/backup/drivers/test_backup_ceph.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd550fe236a21b596498290917a406a947b3bdd6","unresolved":false,"context_lines":[{"line_number":483,"context_line":"                                 {\u0027name\u0027: \u0027backup.mock.snap.15341241.90\u0027},"},{"line_number":484,"context_line":"                                 {\u0027name\u0027: \u0027backup.mock.snap.199994362.10\u0027}])"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"                            self.backup.parent_id \u003d \u0027mock\u0027"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"                            output \u003d self.service.backup(self.backup, rbdio)"},{"line_number":489,"context_line":"                            self.assertEqual({\u0027parent_id\u0027: None}, output)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_3ae28b03","line":486,"updated":"2018-10-25 10:51:00.000000000","message":"-1: Please use a real UUID from cinder.tests.unit.fake_constants.py","commit_id":"6b2e12854c0d50d1405b381c2c9e7764e8dfd01a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd550fe236a21b596498290917a406a947b3bdd6","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                            self.backup.parent_id \u003d \u0027mock\u0027"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"                            output \u003d self.service.backup(self.backup, rbdio)"},{"line_number":489,"context_line":"                            self.assertEqual({\u0027parent_id\u0027: None}, output)"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"                            self.assertEqual([\u0027popen_init\u0027,"},{"line_number":492,"context_line":"                                              \u0027read\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_dabcb7dc","line":489,"updated":"2018-10-25 10:51:00.000000000","message":"nit: Please add a comment explaining why this change is being requested by the backup driver.","commit_id":"6b2e12854c0d50d1405b381c2c9e7764e8dfd01a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd550fe236a21b596498290917a406a947b3bdd6","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        with mock.patch.object(self.service, \u0027_backup_rbd\u0027) as \\"},{"line_number":512,"context_line":"                mock_backup_rbd, mock.patch.object(self.service,"},{"line_number":513,"context_line":"                                                   \u0027_backup_metadata\u0027):"},{"line_number":514,"context_line":"            self.backup.parent_id \u003d \u0027mock\u0027"},{"line_number":515,"context_line":"            mock_backup_rbd.return_value \u003d {\u0027parent_id\u0027: \u0027mock\u0027}"},{"line_number":516,"context_line":"            image \u003d self.service.rbd.Image()"},{"line_number":517,"context_line":"            meta \u003d linuxrbd.RBDImageMetadata(image,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_5ac8a773","line":514,"updated":"2018-10-25 10:51:00.000000000","message":"-1: Use real UUID","commit_id":"6b2e12854c0d50d1405b381c2c9e7764e8dfd01a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dd550fe236a21b596498290917a406a947b3bdd6","unresolved":false,"context_lines":[{"line_number":603,"context_line":"        \"\"\""},{"line_number":604,"context_line":"        backup_name \u003d self.service._get_backup_base_name(self.backup_id,"},{"line_number":605,"context_line":"                                                         diff_format\u003dTrue)"},{"line_number":606,"context_line":"        self.backup.parent_id \u003d \u0027mock\u0027"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        def mock_write_data():"},{"line_number":609,"context_line":"            self.volume_file.seek(0)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_7a900342","line":606,"updated":"2018-10-25 10:51:00.000000000","message":"-1: ditto","commit_id":"6b2e12854c0d50d1405b381c2c9e7764e8dfd01a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5cefa5d5d13f6c6ed3de5f4a7b2244307a70d434","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                            self.backup.parent_id \u003d fake.UUID1"},{"line_number":487,"context_line":"                            output \u003d self.service.backup(self.backup, rbdio)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"                            # If the source volume is an RBD and we use the"},{"line_number":490,"context_line":"                            # `incremental`option we will attempt to do an"},{"line_number":491,"context_line":"                            # incremental/differential backup."},{"line_number":492,"context_line":"                            # Since we are asserting the callstack the output"},{"line_number":493,"context_line":"                            # will be None. However, it\u0027s"},{"line_number":494,"context_line":"                            # necessary to check if key `parent_id` is"},{"line_number":495,"context_line":"                            # returned."},{"line_number":496,"context_line":"                            self.assertIsNone(output[\u0027parent_id\u0027])"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"                            self.assertEqual([\u0027popen_init\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_ec66e428","line":495,"range":{"start_line":489,"start_character":0,"end_line":495,"end_character":39},"updated":"2018-11-05 10:53:49.000000000","message":"-1: I think we could explain this better.\n\n    # Confirm that the backup process is not able to find the\n    # parent backup for incremental (creates a full backup) \n    # and requests the DB to be changed to reflect that \n    # there\u0027s no parent (is full backup).","commit_id":"584e006f3eb650acd11a082097b06c3759c8fde3"}],"releasenotes/notes/ceph-driver-full-backups-by-default-c0677d4b6358cf14.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"116903353a12674b5f056c38470c0796f5395bfd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    default) to keep consistency between drivers."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Volume backup service with Ceph driver will now respect the `--incremental`"},{"line_number":7,"context_line":"    option for backups. If the incremental flag is not specified then a new"},{"line_number":8,"context_line":"    full backup will always be created."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f79a3b5_47b74ed2","line":7,"range":{"start_line":7,"start_character":15,"end_line":7,"end_character":22},"updated":"2018-11-27 09:05:14.000000000","message":"-1: I just realized that this could be misinterpreted as the Ceph driver supporting incremental for non Ceph volumes.  We should be explicit here to say that this is only for Ceph volumes, we still don\u0027t support incremental for non Ceph volumes.","commit_id":"2f63b7ff06eb0f766b90fa76fea9d1ac14bb547c"}]}
