)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"82a719ed2f597b21cfe585e7890d43a7eb685048","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Benny Kopilov \u003cbkopilov@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-16 15:45:17 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"cinder backup force-delete when backup creating test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Testcases to force delete a backup in creating states."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1a1ced50_83757a99","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":7},"updated":"2017-03-20 16:06:23.000000000","message":"nit: Added cinder...","commit_id":"8d936fd377cb156664cc42c4a69bbe051f1c163d"}],"releasenotes/notes/add-volume-backup-force-delete-af0156651a0cbf7f.yaml":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"463915f91390fb7d3189710eb0a7091b4320e96a","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    #force-delete-a-backup."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"      * Force-deletes a backup(v2)"},{"line_number":9,"context_line":"      * Force-deletes a backup(v1)"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bff0334d_32d90e83","line":9,"range":{"start_line":9,"start_character":1,"end_line":9,"end_character":34},"updated":"2017-04-05 18:21:05.000000000","message":"We don\u0027t need to implement v1 client anymore.","commit_id":"0cc5d9a369e19a9ee2b616d53cc45699fafb675e"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"54498c3b47cb47e4a053c7ac49c4edf2ade86cbc","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    #force-delete-a-backup."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"      * Force-deletes a backup(v2)"},{"line_number":9,"context_line":"      * Force-deletes a backup(v1)"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bff0334d_be503c34","line":9,"range":{"start_line":9,"start_character":1,"end_line":9,"end_character":34},"in_reply_to":"bff0334d_32d90e83","updated":"2017-04-06 03:31:11.000000000","message":"removing v1 .\nThanks,\nBenny","commit_id":"0cc5d9a369e19a9ee2b616d53cc45699fafb675e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"dbb829bd5992d2e95b02551614ac6e14ef170701","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    https://developer.openstack.org/api-ref/block-storage/v3/"},{"line_number":6,"context_line":"    #force-delete-a-backup."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"      * Force-deletes a backup(v2)"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":24,"id":"bff0334d_a948905b","line":8,"range":{"start_line":8,"start_character":5,"end_line":8,"end_character":34},"updated":"2017-04-10 13:08:56.000000000","message":"nit: this gets over indented in the release notes","commit_id":"490ac017359a547d5085a56d2adbab4f708351eb"}],"tempest/api/volume/admin/test_volumes_backup.py":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"66d1c703fb7c704b8f656ac4dc800cd1590bf7db","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Reset backup state to error."},{"line_number":178,"context_line":"        self.admin_backups_client.reset_backup_status(backup[\u0027id\u0027],"},{"line_number":179,"context_line":"                                                      status\u003d\u0027error\u0027)"},{"line_number":180,"context_line":"        backup_info \u003d self.admin_backups_client.show_backup("},{"line_number":181,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":182,"context_line":"        self.assertEqual(\u0027error\u0027, backup_info[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_30189984","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":69},"updated":"2016-06-22 09:15:56.000000000","message":"Hi Benny,\nBackup with \u0027error\u0027 status can be deleted, you should not use force deletion.\nI suggest to create a backup and right after that, while backup status is \u0027creating\u0027, force delete the backup, without waiting for the status to become \u0027available\u0027.","commit_id":"5c9b0ba0588976d8eb6c3813679ba7f6cf5e0ce9"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"4f6f452d4a396f60cf49eb9ef72d60eb1a27b156","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @test.idempotent_id(\u00277cedd8f0-d6e5-47ea-b25f-69a5540d5fbc\u0027)"},{"line_number":170,"context_line":"    def test_volume_backup_force_delete_when_backup_available(self):"},{"line_number":171,"context_line":"        # Create a backup"},{"line_number":172,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_f76a7c19","line":171,"range":{"start_line":171,"start_character":8,"end_line":171,"end_character":9},"updated":"2016-06-22 12:32:34.000000000","message":"Add doc string with test description","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"4f6f452d4a396f60cf49eb9ef72d60eb1a27b156","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # Create a backup"},{"line_number":172,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"},{"line_number":175,"context_line":"        self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],"},{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_77684cf6","line":174,"updated":"2016-06-22 12:32:34.000000000","message":"add Cleanup for backup","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"53ca2479e3ef62ade1e32ca4535a7dc1db7fa9c7","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # Create a backup"},{"line_number":172,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"},{"line_number":175,"context_line":"        self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],"},{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_ac5f0a71","line":174,"in_reply_to":"3aaa91ec_77684cf6","updated":"2016-06-22 12:57:12.000000000","message":"Hi , \nNot sure we need it because force_delete run at the end of the test case .","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"f385c662f0e502c6df684fac75ae5cd7b0dbe12c","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # Create a backup"},{"line_number":172,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"},{"line_number":175,"context_line":"        self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],"},{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_1fbc7e04","line":174,"in_reply_to":"3aaa91ec_ac5f0a71","updated":"2016-06-22 13:12:09.000000000","message":"if your test failed on line self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],                                                     \u0027available\u0027), for example backup build in error status because of some problem on env, your backup stay after tests. so, IMHO\nneed add CleanUp with some function for check backup in backup-list","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"4f6f452d4a396f60cf49eb9ef72d60eb1a27b156","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"},{"line_number":175,"context_line":"        self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],"},{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"},{"line_number":178,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_b7a47457","line":176,"range":{"start_line":176,"start_character":58,"end_line":176,"end_character":67},"updated":"2016-06-22 12:32:34.000000000","message":"why available? maybe \"creating\" ?","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"f385c662f0e502c6df684fac75ae5cd7b0dbe12c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"},{"line_number":175,"context_line":"        self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],"},{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"},{"line_number":178,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_3f6dfa98","line":176,"range":{"start_line":176,"start_character":58,"end_line":176,"end_character":67},"in_reply_to":"3aaa91ec_6ce242d7","updated":"2016-06-22 13:12:09.000000000","message":"but your test name \"cinder backup force-delete when backup creating test\"","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"53ca2479e3ef62ade1e32ca4535a7dc1db7fa9c7","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        backup \u003d self.admin_backups_client.create_backup("},{"line_number":174,"context_line":"            volume_id\u003dself.volume[\u0027id\u0027], name\u003dbackup_name)[\u0027backup\u0027]"},{"line_number":175,"context_line":"        self.admin_backups_client.wait_for_backup_status(backup[\u0027id\u0027],"},{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"},{"line_number":178,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_6ce242d7","line":176,"range":{"start_line":176,"start_character":58,"end_line":176,"end_character":67},"in_reply_to":"3aaa91ec_b7a47457","updated":"2016-06-22 12:57:12.000000000","message":"Hi,  \nThanks for your comments ,\nI tried with \"creating\" it failed on ceph backend , i think there is a bug .\nSo i will check it , in the meanwhile i will test it with \"available\"","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"4f6f452d4a396f60cf49eb9ef72d60eb1a27b156","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"},{"line_number":178,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class VolumesBackupsV1Test(VolumesBackupsV2Test):"},{"line_number":182,"context_line":"    _api_version \u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_b740f457","line":179,"updated":"2016-06-22 12:32:34.000000000","message":"I think need add some checker: check_backup_was_deleted","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"f385c662f0e502c6df684fac75ae5cd7b0dbe12c","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"},{"line_number":178,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class VolumesBackupsV1Test(VolumesBackupsV2Test):"},{"line_number":182,"context_line":"    _api_version \u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_ff6d3233","line":179,"in_reply_to":"3aaa91ec_ac88aae8","updated":"2016-06-22 13:12:09.000000000","message":"cinder return info: \"Request to delete backup \u003cbackup_id\u003e has been accepted.\" But This does not mean, that backup was removed successfully","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"53ca2479e3ef62ade1e32ca4535a7dc1db7fa9c7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                                         \u0027available\u0027)"},{"line_number":177,"context_line":"        # Force delete backup"},{"line_number":178,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class VolumesBackupsV1Test(VolumesBackupsV2Test):"},{"line_number":182,"context_line":"    _api_version \u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_ac88aae8","line":179,"in_reply_to":"3aaa91ec_b740f457","updated":"2016-06-22 12:57:12.000000000","message":"force_delete delete the backup ,  the delete return 202 , otherwise it fails.","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"aefe7125d9ddac0e50bc22d2aecfb2debfa449a8","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    @testtools.skipIf(CONF.volume.storage_protocol \u003d\u003d \u0027ceph\u0027,"},{"line_number":141,"context_line":"                      \u0027Currently, Ceph does not support \u0027"},{"line_number":142,"context_line":"                      \u0027backup force_delete\u0027)"},{"line_number":143,"context_line":"    def test_volume_backup_force_delete_when_backup_available(self):"},{"line_number":144,"context_line":"        # create a volume"},{"line_number":145,"context_line":"        volume \u003d self.create_volume()"},{"line_number":146,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_c5d6c7c4","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":61},"updated":"2017-01-03 03:27:53.000000000","message":"it seems should be better for force-delete to delete a volume with abnormal state","commit_id":"6bc6818580c9f64bb01e40074d77f5fe15877c11"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"4b352788bfcc81d2a04688ef324aeb2aec90e0d0","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    @testtools.skipIf(CONF.volume.storage_protocol \u003d\u003d \u0027ceph\u0027,"},{"line_number":141,"context_line":"                      \u0027Currently, Ceph does not support \u0027"},{"line_number":142,"context_line":"                      \u0027backup force_delete\u0027)"},{"line_number":143,"context_line":"    def test_volume_backup_force_delete_when_backup_available(self):"},{"line_number":144,"context_line":"        # create a volume"},{"line_number":145,"context_line":"        volume \u003d self.create_volume()"},{"line_number":146,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_88bbf6c3","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":61},"in_reply_to":"ba5201f7_c5d6c7c4","updated":"2017-01-03 04:50:59.000000000","message":"Hi, \nThanks for your comment , \ni think i will add another test and will use force for volume in error state.\n\nBenny","commit_id":"6bc6818580c9f64bb01e40074d77f5fe15877c11"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"aefe7125d9ddac0e50bc22d2aecfb2debfa449a8","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":150,"context_line":"                                    name\u003dbackup_name)"},{"line_number":151,"context_line":"        # Force delete a backup volume when active"},{"line_number":152,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class VolumesBackupsAdminV1Test(VolumesBackupsAdminV2Test):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_c5e24703","line":152,"range":{"start_line":152,"start_character":8,"end_line":152,"end_character":67},"updated":"2017-01-03 03:27:53.000000000","message":"Here should check whether the backup of volume is deleted successfully","commit_id":"6bc6818580c9f64bb01e40074d77f5fe15877c11"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"4b352788bfcc81d2a04688ef324aeb2aec90e0d0","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":150,"context_line":"                                    name\u003dbackup_name)"},{"line_number":151,"context_line":"        # Force delete a backup volume when active"},{"line_number":152,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class VolumesBackupsAdminV1Test(VolumesBackupsAdminV2Test):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_28c5aa3b","line":152,"range":{"start_line":152,"start_character":8,"end_line":152,"end_character":67},"in_reply_to":"ba5201f7_c5e24703","updated":"2017-01-03 04:50:59.000000000","message":"Basically we trust API returned value and assume if its 202 we are ok .","commit_id":"6bc6818580c9f64bb01e40074d77f5fe15877c11"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c40af544b546db3dd32d5bbfae934e8147371e7f","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    @testtools.skipIf(CONF.volume.storage_protocol \u003d\u003d \u0027ceph\u0027,"},{"line_number":141,"context_line":"                      \u0027Currently, Ceph does not support \u0027"},{"line_number":142,"context_line":"                      \u0027backup force_delete\u0027)"},{"line_number":143,"context_line":"    def test_volume_backup_force_delete_when_backup_is_available(self):"},{"line_number":144,"context_line":"        # create a volume"},{"line_number":145,"context_line":"        volume \u003d self.create_volume()"},{"line_number":146,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_e76ff228","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":64},"updated":"2017-01-05 08:05:54.000000000","message":"It seems this testcase are not very necessary.\nGenerally speaking, we will use force-delete to delete abnormal backup, and to test all possible combinations may make the testcases count increase too quickly. just personal opinion, let\u0027s wait for other opinions:)","commit_id":"b4f30e843287cc777395da1faab2780b9fdd7aa7"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c40af544b546db3dd32d5bbfae934e8147371e7f","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                                                      status\u003d\"error\")"},{"line_number":169,"context_line":"        waiters.wait_for_backup_status(self.admin_backups_client,"},{"line_number":170,"context_line":"                                       backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":171,"context_line":"        # Force delete a backup volume when active"},{"line_number":172,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_670782ca","line":171,"range":{"start_line":171,"start_character":44,"end_line":171,"end_character":50},"updated":"2017-01-05 08:05:54.000000000","message":"error","commit_id":"b4f30e843287cc777395da1faab2780b9fdd7aa7"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c40af544b546db3dd32d5bbfae934e8147371e7f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        waiters.wait_for_backup_status(self.admin_backups_client,"},{"line_number":170,"context_line":"                                       backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":171,"context_line":"        # Force delete a backup volume when active"},{"line_number":172,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"class VolumesBackupsAdminV1Test(VolumesBackupsAdminV2Test):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_47c0be2a","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":67},"updated":"2017-01-05 08:05:54.000000000","message":"I still think we should check whether backup is really deleted. \nJust like deleting server, api may return 202 but server may end up with state ERROR and not disappear from the system.","commit_id":"b4f30e843287cc777395da1faab2780b9fdd7aa7"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"a30740abeadce166e40798c5f7b135e964855fa9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                    name\u003dbackup_name)"},{"line_number":149,"context_line":"        # Reset backup status to error"},{"line_number":150,"context_line":"        self.admin_backups_client.reset_backup_status(backup_id\u003dbackup[\u0027id\u0027],"},{"line_number":151,"context_line":"                                                      status\u003d\"error\")"},{"line_number":152,"context_line":"        waiters.wait_for_backup_status(self.admin_backups_client,"},{"line_number":153,"context_line":"                                       backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":154,"context_line":"        # Force delete a backup volume when error"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a430d35_fcb71a82","line":151,"range":{"start_line":151,"start_character":67,"end_line":151,"end_character":69},"updated":"2017-02-09 14:00:40.000000000","message":"Hi Benny,\nForce delete a backup allows deleting backup when its status is other than \"available\" or \"error\". so I suggest to use other status, like \"creating\".","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"8c57ec62ccc386289cdcae2a0ce7934fd8052d29","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                    name\u003dbackup_name)"},{"line_number":149,"context_line":"        # Reset backup status to error"},{"line_number":150,"context_line":"        self.admin_backups_client.reset_backup_status(backup_id\u003dbackup[\u0027id\u0027],"},{"line_number":151,"context_line":"                                                      status\u003d\"error\")"},{"line_number":152,"context_line":"        waiters.wait_for_backup_status(self.admin_backups_client,"},{"line_number":153,"context_line":"                                       backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":154,"context_line":"        # Force delete a backup volume when error"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a430d35_eba831de","line":151,"range":{"start_line":151,"start_character":67,"end_line":151,"end_character":69},"in_reply_to":"1a430d35_b7a68dbe","updated":"2017-02-09 14:20:06.000000000","message":"Why? you just need to update the backup status to \"creating\"","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"18f8114d3355be68dba7ce82274e32a3245b11d1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                    name\u003dbackup_name)"},{"line_number":149,"context_line":"        # Reset backup status to error"},{"line_number":150,"context_line":"        self.admin_backups_client.reset_backup_status(backup_id\u003dbackup[\u0027id\u0027],"},{"line_number":151,"context_line":"                                                      status\u003d\"error\")"},{"line_number":152,"context_line":"        waiters.wait_for_backup_status(self.admin_backups_client,"},{"line_number":153,"context_line":"                                       backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":154,"context_line":"        # Force delete a backup volume when error"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a430d35_34f536cb","line":151,"range":{"start_line":151,"start_character":67,"end_line":151,"end_character":69},"in_reply_to":"1a430d35_eba831de","updated":"2017-02-09 15:20:13.000000000","message":"From command line :\nstack@localhost ~]$ cinder backup-reset-state c64639ef-c91f-4443-823a-a4bb14e296a6 --state creating\nERROR: Reset state for backup c64639ef-c91f-4443-823a-a4bb14e296a6 failed: Must specify a valid status (HTTP 400) (Request-ID: req-6c6837cf-70ae-443b-b5df-b613ed18c270)","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"ee2ae2a4c6337c3d4401f7ae8925d202e1138d89","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                    name\u003dbackup_name)"},{"line_number":149,"context_line":"        # Reset backup status to error"},{"line_number":150,"context_line":"        self.admin_backups_client.reset_backup_status(backup_id\u003dbackup[\u0027id\u0027],"},{"line_number":151,"context_line":"                                                      status\u003d\"error\")"},{"line_number":152,"context_line":"        waiters.wait_for_backup_status(self.admin_backups_client,"},{"line_number":153,"context_line":"                                       backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":154,"context_line":"        # Force delete a backup volume when error"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a430d35_b7a68dbe","line":151,"range":{"start_line":151,"start_character":67,"end_line":151,"end_character":69},"in_reply_to":"1a430d35_fcb71a82","updated":"2017-02-09 14:09:00.000000000","message":"Hi Liron,\nThe valid values for backup reset are \"available\" and \"error\".\nTo catch \"creating\" its a little bit tricky and depends on timer .\n\nBenny","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6e2ca8cfbf3678fe1992044180657f3395e7d55f","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        # Force delete a backup volume when error"},{"line_number":155,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":156,"context_line":"        self.admin_backups_client.wait_for_resource_deletion(backup[\u0027id\u0027])"},{"line_number":157,"context_line":"        self.assertRaises(lib_exc.NotFound,"},{"line_number":158,"context_line":"                          self.admin_backups_client.show_backup, backup[\u0027id\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"class VolumesBackupsAdminV1Test(VolumesBackupsAdminV2Test):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_e5cbed1c","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":78},"updated":"2017-02-10 03:58:15.000000000","message":"this is not needed because wait_for_resource_deletion already does it.","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"a9644453abfcba71b8a4e5dffa39ec000de9b681","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        # Force delete a backup volume when error"},{"line_number":155,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":156,"context_line":"        self.admin_backups_client.wait_for_resource_deletion(backup[\u0027id\u0027])"},{"line_number":157,"context_line":"        self.assertRaises(lib_exc.NotFound,"},{"line_number":158,"context_line":"                          self.admin_backups_client.show_backup, backup[\u0027id\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"class VolumesBackupsAdminV1Test(VolumesBackupsAdminV2Test):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_12e1e9d0","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":78},"in_reply_to":"fa31d9ce_e5cbed1c","updated":"2017-02-12 08:31:57.000000000","message":"ok fixing","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"029f8f3c7a44e1121528a8c42bb26c56242502d5","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":146,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":147,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":148,"context_line":"                                    name\u003dbackup_name)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a1ff146_9ef8a67e","line":145,"updated":"2017-03-15 12:01:29.000000000","message":"You don\u0027t need an explicit name here, just pass name\u003ddata_utils.rand_name(\u0027Backup\u0027) in your create_backup() call","commit_id":"1385501bb03c529da8a3a5f447bcb6cccc2c2415"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"fdca148daa83b77ea0b06f14760766d1eb966ecc","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":146,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":147,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":148,"context_line":"                                    name\u003dbackup_name)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a1ff146_54225f02","line":145,"in_reply_to":"3a1ff146_9ef8a67e","updated":"2017-03-16 11:21:11.000000000","message":"ok  will be fixed","commit_id":"1385501bb03c529da8a3a5f447bcb6cccc2c2415"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"029f8f3c7a44e1121528a8c42bb26c56242502d5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":146,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":147,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":148,"context_line":"                                    name\u003dbackup_name)"},{"line_number":149,"context_line":"        # Reset backup status to error"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a1ff146_fe743afe","line":146,"updated":"2017-03-15 12:01:29.000000000","message":"Why do you have to wait for the backup to be available ? Can\"t just just do wait_until\u003d\"creating\" ? This test currently takes 24sec, which is a lot.","commit_id":"1385501bb03c529da8a3a5f447bcb6cccc2c2415"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"fdca148daa83b77ea0b06f14760766d1eb966ecc","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":146,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":147,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":148,"context_line":"                                    name\u003dbackup_name)"},{"line_number":149,"context_line":"        # Reset backup status to error"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a1ff146_54697f24","line":146,"in_reply_to":"3a1ff146_fe743afe","updated":"2017-03-16 11:21:11.000000000","message":"Ok , i will remove this test and test on the \"creating\" status which is more used for force.\n\nBenny","commit_id":"1385501bb03c529da8a3a5f447bcb6cccc2c2415"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"029f8f3c7a44e1121528a8c42bb26c56242502d5","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # create a volume"},{"line_number":161,"context_line":"        volume \u003d self.create_volume()"},{"line_number":162,"context_line":"        # Create a backup volume"},{"line_number":163,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":164,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":165,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":166,"context_line":"                                    name\u003dbackup_name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a1ff146_bef56284","line":163,"updated":"2017-03-15 12:01:29.000000000","message":"same","commit_id":"1385501bb03c529da8a3a5f447bcb6cccc2c2415"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"d66d8bbaad6f2b3023c15f5a6527bf7863a34a11","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027),"},{"line_number":148,"context_line":"                                    wait_until\u003d\"creating\")"},{"line_number":149,"context_line":"        # Force delete a backup volume when creating"},{"line_number":150,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":151,"context_line":"        self.admin_backups_client.wait_for_resource_deletion(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_2c13325e","line":148,"updated":"2017-03-16 19:11:51.000000000","message":"1. The helper method does not seams to be respecting the wait_until argument, it always waits for available.\n\n2. waiting on transient state is not good idea, and needs to be handled specially. Without extra care it would lead to random gate failures.\n\n\nInstead of specify any state, just call the raw service method for create , and than immeditly call the force delete without checking anything about the state.","commit_id":"8d936fd377cb156664cc42c4a69bbe051f1c163d"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"9c68f66df093ef0879f7355bc958b116d0ca346a","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027),"},{"line_number":148,"context_line":"                                    wait_until\u003d\"creating\")"},{"line_number":149,"context_line":"        # Force delete a backup volume when creating"},{"line_number":150,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":151,"context_line":"        self.admin_backups_client.wait_for_resource_deletion(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_f1bff85d","line":148,"in_reply_to":"1a1ced50_2c13325e","updated":"2017-03-19 04:46:47.000000000","message":"Hi Attila,\nthe create_backup does support wait_until , i modified the function to accept states , i dont think it should be hard coded anyway.\n\nRemoving with force immediatly will make this test inconclusive and to be random testcase ..  we wont know in what phase force flag is broken.\n\n\nThank,\nBenny","commit_id":"8d936fd377cb156664cc42c4a69bbe051f1c163d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"129de30cd96ea03661397dccb3cc4450e85157a0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027))"},{"line_number":148,"context_line":"        # Force delete a backup volume when backup is starting"},{"line_number":149,"context_line":"        # The state of the backup depends on device performance"},{"line_number":150,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"ffe62b97_4aec2029","line":147,"range":{"start_line":145,"start_character":0,"end_line":147,"end_character":72},"updated":"2017-03-29 08:13:26.000000000","message":"this will wait for available and that\u0027s not what we want","commit_id":"ce2943334f86120a8ffbe1f750a64d25ffffb3ab"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"c1159d30e3fee13b3ac61234638687dfbe50db40","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027))"},{"line_number":148,"context_line":"        # Force delete a backup volume when backup is starting"},{"line_number":149,"context_line":"        # The state of the backup depends on device performance"},{"line_number":150,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"ffe62b97_6a67e4b8","line":147,"range":{"start_line":145,"start_character":0,"end_line":147,"end_character":72},"in_reply_to":"ffe62b97_4aec2029","updated":"2017-03-29 08:15:43.000000000","message":"Yee fixing :)","commit_id":"ce2943334f86120a8ffbe1f750a64d25ffffb3ab"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c006438d8f1c84ea647ff923f729c8947910b030","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                                backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027e60d7379-82b2-474f-8065-10ef985e0089\u0027)"},{"line_number":141,"context_line":"    def test_volume_backup_force_delete_after_backup_is_starting(self):"},{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":20,"id":"ffe62b97_2a9b1c18","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":45},"updated":"2017-03-29 08:25:40.000000000","message":"when ?","commit_id":"64f84849293f308d60531f9e4fa62d48dc598df6"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"2420839ab8b0d5994e6065dc86cb4dfbb57360ee","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                                backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027e60d7379-82b2-474f-8065-10ef985e0089\u0027)"},{"line_number":141,"context_line":"    def test_volume_backup_force_delete_after_backup_is_starting(self):"},{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":20,"id":"ffe62b97_ea477476","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":45},"in_reply_to":"ffe62b97_2a9b1c18","updated":"2017-03-29 08:28:42.000000000","message":"Well , when refers to waiting for a state , at least for me.\nif it will bother others promise to change it :)\n\nThanks a lot !!!!","commit_id":"64f84849293f308d60531f9e4fa62d48dc598df6"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f342c1077fc6ff6384304cd19ef57e1be1494bce","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027),"},{"line_number":148,"context_line":"                                    wait_until\u003dNone)"},{"line_number":149,"context_line":"        # Force delete a backup volume when backup is starting"},{"line_number":150,"context_line":"        # The state of the backup depends on device performance"},{"line_number":151,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":152,"context_line":"        self.admin_backups_client.wait_for_resource_deletion(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"ffe62b97_3426b369","line":150,"range":{"start_line":149,"start_character":0,"end_line":150,"end_character":63},"updated":"2017-03-30 05:43:49.000000000","message":"This looks like an inherently racy tests. Since you cannot control the transient state of backup in progress, you cannot know what the state is actually going to be.\nHaving a different state in this case would not cause the test to fail, but it would fail to verify what this test aims to verify - I think a functional test would be a more appropriate way to implement this.","commit_id":"64f84849293f308d60531f9e4fa62d48dc598df6"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"9485c1a24bb0867f53f01dd219f1effb87bde923","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027),"},{"line_number":148,"context_line":"                                    wait_until\u003dNone)"},{"line_number":149,"context_line":"        # Force delete a backup volume when backup is starting"},{"line_number":150,"context_line":"        # The state of the backup depends on device performance"},{"line_number":151,"context_line":"        self.admin_backups_client.force_delete_backup(backup[\u0027id\u0027])"},{"line_number":152,"context_line":"        self.admin_backups_client.wait_for_resource_deletion(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"ffe62b97_8bdb1520","line":150,"range":{"start_line":149,"start_character":0,"end_line":150,"end_character":63},"in_reply_to":"ffe62b97_3426b369","updated":"2017-03-30 09:45:10.000000000","message":"The other way will be force-delete when backup is in error state , means that we will change the backup state and force-delete .","commit_id":"64f84849293f308d60531f9e4fa62d48dc598df6"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e3fcf37c41a651b0f892b8f0a13811b84b9c2829","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027))"},{"line_number":148,"context_line":"        # Reset backup status to error"},{"line_number":149,"context_line":"        self.admin_backups_client.reset_backup_status(backup_id\u003dbackup[\u0027id\u0027],"},{"line_number":150,"context_line":"                                                      status\u003d\"error\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfeb2761_cd21e3fd","line":147,"updated":"2017-04-03 10:19:12.000000000","message":"if you don\u0027t set wait_until\u003dNone here, then the addition you made to create_backup() won\u0027t work.","commit_id":"383ca7144b1ddb94c1fbdfb80d97cb324c1ce5a0"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"261ef9f2564f8ed7c6e6a7c44dade481c2c85955","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        # Create a backup volume"},{"line_number":145,"context_line":"        backup \u003d self.create_backup(backup_client\u003dself.admin_backups_client,"},{"line_number":146,"context_line":"                                    volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":147,"context_line":"                                    name\u003ddata_utils.rand_name(\u0027Backup\u0027))"},{"line_number":148,"context_line":"        # Reset backup status to error"},{"line_number":149,"context_line":"        self.admin_backups_client.reset_backup_status(backup_id\u003dbackup[\u0027id\u0027],"},{"line_number":150,"context_line":"                                                      status\u003d\"error\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfeb2761_bb80198d","line":147,"in_reply_to":"dfeb2761_cd21e3fd","updated":"2017-04-03 11:13:04.000000000","message":"Hi Jordan ,\nThe test is delete when volume in error state and i will remove the none condition \nThanks !","commit_id":"383ca7144b1ddb94c1fbdfb80d97cb324c1ce5a0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a2dd2a1fa00ba659fc2b27a5c03687be82da25e8","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                                backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027e60d7379-82b2-474f-8065-10ef985e0089\u0027)"},{"line_number":141,"context_line":"    def test_volume_backup_force_delete_when_backup_is_error(self):"},{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":24,"id":"bff0334d_689b8265","line":141,"updated":"2017-04-11 09:15:18.000000000","message":"So this test takes 30sec which is a lot for such a small use case. The test starts very like the test above (test_volume_backup_reset_status) so I suggest you remove the test above, since this one is more complete.","commit_id":"490ac017359a547d5085a56d2adbab4f708351eb"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"7125794ed04637736d3999e48d7196b814d91e5d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                                backup[\u0027id\u0027], \u0027error\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027e60d7379-82b2-474f-8065-10ef985e0089\u0027)"},{"line_number":141,"context_line":"    def test_volume_backup_force_delete_when_backup_is_error(self):"},{"line_number":142,"context_line":"        # create a volume"},{"line_number":143,"context_line":"        volume \u003d self.create_volume()"},{"line_number":144,"context_line":"        # Create a backup volume"}],"source_content_type":"text/x-python","patch_set":24,"id":"bff0334d_37d5ca44","line":141,"in_reply_to":"bff0334d_689b8265","updated":"2017-04-11 14:51:48.000000000","message":"ok , will do it.\nThanks,","commit_id":"490ac017359a547d5085a56d2adbab4f708351eb"}],"tempest/api/volume/base.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6e2ca8cfbf3678fe1992044180657f3395e7d55f","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                         snapshot[\u0027id\u0027], \u0027available\u0027)"},{"line_number":153,"context_line":"        return snapshot"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @classmethod"},{"line_number":156,"context_line":"    def create_backup(cls, volume_id, backup_client\u003dNone, **kwargs):"},{"line_number":157,"context_line":"        \"\"\"Wrapper utility that returns a test backup.\"\"\""},{"line_number":158,"context_line":"        if backup_client is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_85fcf13f","line":155,"range":{"start_line":155,"start_character":4,"end_line":155,"end_character":16},"updated":"2017-02-10 03:58:15.000000000","message":"why change to class method? seems no calling in resource_setup","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"a9644453abfcba71b8a4e5dffa39ec000de9b681","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                         snapshot[\u0027id\u0027], \u0027available\u0027)"},{"line_number":153,"context_line":"        return snapshot"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @classmethod"},{"line_number":156,"context_line":"    def create_backup(cls, volume_id, backup_client\u003dNone, **kwargs):"},{"line_number":157,"context_line":"        \"\"\"Wrapper utility that returns a test backup.\"\"\""},{"line_number":158,"context_line":"        if backup_client is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_d2d751eb","line":155,"range":{"start_line":155,"start_character":4,"end_line":155,"end_character":16},"in_reply_to":"fa31d9ce_85fcf13f","updated":"2017-02-12 08:31:57.000000000","message":"The create_backup function can be used in resource_setup as create volume here in the same file .\nWe should keep the same writing style for these functions.\n\nWe should think about next re-use and not only on a local change, we are in base.py code !!!\n\nPlease see other examples here in the same file .\nBenny","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d6926cf2a0597b9448a71dcb59acce37224c79fe","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        return snapshot"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def create_backup(self, volume_id, backup_client\u003dNone,"},{"line_number":154,"context_line":"                      wait_until\u003d\"available\", **kwargs):"},{"line_number":155,"context_line":"        \"\"\"Wrapper utility that returns a test backup.\"\"\""},{"line_number":156,"context_line":"        if backup_client is None:"},{"line_number":157,"context_line":"            backup_client \u003d self.backups_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa31d9ce_ba3aab96","line":154,"updated":"2017-02-13 03:01:30.000000000","message":"better to add a name parameter, if not specified then automatically generate a random one.","commit_id":"2b5162d2bb2ac9a85e8bdcfcd293f9b5d10efacc"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"f8ec1853a3d19a4799839db640e0c728c21e5282","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        return snapshot"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def create_backup(self, volume_id, backup_client\u003dNone,"},{"line_number":154,"context_line":"                      wait_until\u003d\"available\", **kwargs):"},{"line_number":155,"context_line":"        \"\"\"Wrapper utility that returns a test backup.\"\"\""},{"line_number":156,"context_line":"        if backup_client is None:"},{"line_number":157,"context_line":"            backup_client \u003d self.backups_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa31d9ce_aa5ed60f","line":154,"in_reply_to":"fa31d9ce_ba3aab96","updated":"2017-02-13 05:55:33.000000000","message":"Please see create_test_server \n\ndef create_test_server(clients, validatable\u003dFalse, validation_resources\u003dNone,\n                       tenant_network\u003dNone, wait_until\u003dNone,\n                       volume_backed\u003dFalse, name\u003dNone, flavor\u003dNone,\n                       image_id\u003dNone, **kwargs):","commit_id":"2b5162d2bb2ac9a85e8bdcfcd293f9b5d10efacc"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"cce5253e8c32c7602cecbd5ff835719b56096f29","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":163,"context_line":"                        backup_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":164,"context_line":"        waiters.wait_for_backup_status(backup_client, backup[\u0027id\u0027],"},{"line_number":165,"context_line":"                                       wait_until)"},{"line_number":166,"context_line":"        return backup"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da36d5c6_3e0b982b","line":164,"updated":"2017-02-24 15:34:51.000000000","message":"This waiter doesn\"t exit anymore.","commit_id":"813bfa47c9487d63645a6926fa750bdfe41d6e29"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"c4befad6c28db29c645a93c8b7695fb9126b9e43","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":163,"context_line":"                        backup_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":164,"context_line":"        waiters.wait_for_backup_status(backup_client, backup[\u0027id\u0027],"},{"line_number":165,"context_line":"                                       wait_until)"},{"line_number":166,"context_line":"        return backup"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da36d5c6_39a2d299","line":164,"in_reply_to":"da36d5c6_3e0b982b","updated":"2017-02-24 15:45:59.000000000","message":"Hi Jordon , \nThanks !","commit_id":"813bfa47c9487d63645a6926fa750bdfe41d6e29"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"295b882ec8e5c5ea6ab9468b71c4e2e7c31f1688","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":138,"context_line":"                        backup_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":139,"context_line":"        waiters.wait_for_volume_resource_status(backup_client, backup[\u0027id\u0027],"},{"line_number":140,"context_line":"                                                wait_until)"},{"line_number":141,"context_line":"        return backup"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # NOTE(afazekas): these create_* and clean_* could be defined"}],"source_content_type":"text/x-python","patch_set":18,"id":"ffe62b97_f1b3efe7","line":140,"range":{"start_line":139,"start_character":0,"end_line":140,"end_character":59},"updated":"2017-03-29 06:57:21.000000000","message":"to wait for status \u0027creating\u0027 seems not a good idea because it is not a stable state.\nhow about:\n    if wait_until is not None:\n        waiters.wait_for_volume_resource_status(backup_client, backup[\u0027id\u0027],\n                                                wait_until)\n\ni.e., to force-delete a backup immediately after creating it.","commit_id":"117799e7c21e8fed47bde9c5756dab8b9b12a7fb"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"49dcbc84212937904a9d957f3c176589ace7d8ee","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":138,"context_line":"                        backup_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":139,"context_line":"        waiters.wait_for_volume_resource_status(backup_client, backup[\u0027id\u0027],"},{"line_number":140,"context_line":"                                                wait_until)"},{"line_number":141,"context_line":"        return backup"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # NOTE(afazekas): these create_* and clean_* could be defined"}],"source_content_type":"text/x-python","patch_set":18,"id":"ffe62b97_67a6fdad","line":140,"range":{"start_line":139,"start_character":0,"end_line":140,"end_character":59},"in_reply_to":"ffe62b97_f1b3efe7","updated":"2017-03-29 07:56:39.000000000","message":"Hi Zhufl ,\nMaybe we can just force-remove the backup immediatly after create as Attila suggested .\nWhat do you think ?","commit_id":"117799e7c21e8fed47bde9c5756dab8b9b12a7fb"}],"tempest/lib/services/volume/v1/backups_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"463915f91390fb7d3189710eb0a7091b4320e96a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":56,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def force_delete_backup(self, backup_id):"},{"line_number":59,"context_line":"        \"\"\"Force delete a backup volume.\"\"\""},{"line_number":60,"context_line":"        post_body \u003d json.dumps({\u0027os-force_delete\u0027: {}})"},{"line_number":61,"context_line":"        url \u003d \u0027backups/%s/action\u0027 % backup_id"},{"line_number":62,"context_line":"        resp, body \u003d self.post(url, post_body)"},{"line_number":63,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":64,"context_line":"        return rest_client.ResponseBody(resp)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def show_backup(self, backup_id):"},{"line_number":67,"context_line":"        \"\"\"Returns the details of a single backup.\"\"\""}],"source_content_type":"text/x-python","patch_set":23,"id":"bff0334d_32946e8b","line":64,"range":{"start_line":58,"start_character":0,"end_line":64,"end_character":45},"updated":"2017-04-05 18:21:05.000000000","message":"All Cinder V1 API tests have been removed already, so we don\u0027t need to implement the V1 clients anymore.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2017-March/114507.html is a reference here.","commit_id":"0cc5d9a369e19a9ee2b616d53cc45699fafb675e"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"54498c3b47cb47e4a053c7ac49c4edf2ade86cbc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":56,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def force_delete_backup(self, backup_id):"},{"line_number":59,"context_line":"        \"\"\"Force delete a backup volume.\"\"\""},{"line_number":60,"context_line":"        post_body \u003d json.dumps({\u0027os-force_delete\u0027: {}})"},{"line_number":61,"context_line":"        url \u003d \u0027backups/%s/action\u0027 % backup_id"},{"line_number":62,"context_line":"        resp, body \u003d self.post(url, post_body)"},{"line_number":63,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":64,"context_line":"        return rest_client.ResponseBody(resp)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def show_backup(self, backup_id):"},{"line_number":67,"context_line":"        \"\"\"Returns the details of a single backup.\"\"\""}],"source_content_type":"text/x-python","patch_set":23,"id":"bff0334d_7e4ab480","line":64,"range":{"start_line":58,"start_character":0,"end_line":64,"end_character":45},"in_reply_to":"bff0334d_32946e8b","updated":"2017-04-06 03:31:11.000000000","message":"Removed","commit_id":"0cc5d9a369e19a9ee2b616d53cc45699fafb675e"}],"tempest/lib/services/volume/v2/backups_client.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6e2ca8cfbf3678fe1992044180657f3395e7d55f","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"           This operation does not return a response body."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"           Available params: http://developer.openstack.org/"},{"line_number":64,"context_line":"           api-ref-blockstorage-v2.html#forceDeleteBackup"},{"line_number":65,"context_line":"         \"\"\""},{"line_number":66,"context_line":"        post_body \u003d json.dumps({\u0027os-force_delete\u0027: {}})"},{"line_number":67,"context_line":"        url \u003d \u0027backups/%s/action\u0027 % backup_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_a5c1f530","line":64,"range":{"start_line":63,"start_character":11,"end_line":64,"end_character":57},"updated":"2017-02-10 03:58:15.000000000","message":"should be put in one line.\nBTW, if no other parameter, then the link seems not very necessary.","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"a9644453abfcba71b8a4e5dffa39ec000de9b681","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"           This operation does not return a response body."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"           Available params: http://developer.openstack.org/"},{"line_number":64,"context_line":"           api-ref-blockstorage-v2.html#forceDeleteBackup"},{"line_number":65,"context_line":"         \"\"\""},{"line_number":66,"context_line":"        post_body \u003d json.dumps({\u0027os-force_delete\u0027: {}})"},{"line_number":67,"context_line":"        url \u003d \u0027backups/%s/action\u0027 % backup_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_12080991","line":64,"range":{"start_line":63,"start_character":11,"end_line":64,"end_character":57},"in_reply_to":"fa31d9ce_a5c1f530","updated":"2017-02-12 08:31:57.000000000","message":"ok fixing","commit_id":"ef270f45870b7145b5b72a7bd394850af96cba61"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"82a719ed2f597b21cfe585e7890d43a7eb685048","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def force_delete_backup(self, backup_id):"},{"line_number":59,"context_line":"        \"\"\"Force delete a backup volume.\"\"\""},{"line_number":60,"context_line":"        post_body \u003d json.dumps({\u0027os-force_delete\u0027: {}})"},{"line_number":61,"context_line":"        url \u003d \u0027backups/%s/action\u0027 % backup_id"},{"line_number":62,"context_line":"        resp, body \u003d self.post(url, post_body)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_63a79e4f","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":43},"updated":"2017-03-20 16:06:23.000000000","message":"for docstring use form:\n\"\"\"Force delete a backup volume.\n\nFor a full list of available parameters, please refer to the official\nAPI reference:\nhttp://developer.openstack.org/api-ref/block-storage/v2/#force-delete-backup\n\"\"\"","commit_id":"8d936fd377cb156664cc42c4a69bbe051f1c163d"}],"tempest/services/volume/base/base_backups_client.py":[{"author":{"_account_id":14510,"name":"Oleksii Butenko","email":"apbutenko@gmail.com","username":"obutenko"},"change_message_id":"4f6f452d4a396f60cf49eb9ef72d60eb1a27b156","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":48,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def force_delete_backup(self, backup_id):"},{"line_number":51,"context_line":"        \"\"\"Force delete a backup volume"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"           This operation does not return a response body."}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_291b0c74","line":50,"updated":"2016-06-22 12:32:34.000000000","message":"Maybe we can modify \"def delete_backup\" for work with flag --force ?","commit_id":"dda135358b551309dd200d6d3ce1bc663f2b3c99"}]}
