)]}'
{"etc/tempest.conf.sample":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"56ca1af5b25be1e8672df3665dbec3ee00845ce9","unresolved":false,"context_lines":[{"line_number":262,"context_line":"# You should update to reflect those exported by configured backend driver."},{"line_number":263,"context_line":"storage_protocol \u003d iSCSI"},{"line_number":264,"context_line":"vendor_name \u003d Open Source"},{"line_number":265,"context_line":"volume_backup_enabled \u003d true"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"[object-storage]"},{"line_number":268,"context_line":"# This section contains configuration options used when executing tests"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAASn%2F%2FNN0%3D","line":265,"updated":"2013-09-10 00:57:17.000000000","message":"could you please change this back to false so it will match the default settings in devstack?","commit_id":"a0a66b151a4319bcef9fc29fd4234a5a6575974f"}],"tempest/api/volume/test_volumes_backups.py":[{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"8a5d4d3a8ceaf8f8958ce338fbfb259af3945830","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.client.wait_for_backup_status(backup[\u0027id\u0027], \u0027restoring\u0027)"},{"line_number":77,"context_line":"        self.client.wait_for_backup_status(backup[\u0027id\u0027], \u0027available\u0027)"},{"line_number":78,"context_line":"        self.client.wait_for_volume_status(restore[\u0027volume_id\u0027], \u0027available\u0027)"},{"line_number":79,"context_line":"        "},{"line_number":80,"context_line":"        resp, body \u003d self.client.backup_delete(backup[\u0027id\u0027])"},{"line_number":81,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FTgs%3D","line":79,"updated":"2013-09-06 17:21:00.000000000","message":"This will make pep8 cry","commit_id":"0313de9a38be9bd204a814efa38908424c0b245e"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"56ca1af5b25be1e8672df3665dbec3ee00845ce9","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":53,"context_line":"    def test_volume_backup_restore_delete(self):"},{"line_number":54,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":56,"context_line":"        self.client.wait_for_volume_status(self.volume[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FNN4%3D","line":53,"updated":"2013-09-10 00:57:17.000000000","message":"I think this should read \"test_volume_backup_create_restore_delete\"","commit_id":"a0a66b151a4319bcef9fc29fd4234a5a6575974f"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"9e473ccee6efa84358f7cd42d8916d1dac21e011","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":53,"context_line":"    def test_volume_backup_restore_delete(self):"},{"line_number":54,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":56,"context_line":"        self.client.wait_for_volume_status(self.volume[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FNMk%3D","line":53,"updated":"2013-09-10 01:01:31.000000000","message":"as per comment to p#5 , I\u0027d rename this into test_volume_backup_create_restore_delete but it\u0027s a minor issue, feel free to ignore it unless other people demand for more changes","commit_id":"1cdfd0972ace3795da80dd7d77f2c5c2c8fc4ea1"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"b6bc4a15d192c8856c041794f2e2d90687653aba","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":53,"context_line":"    def test_volume_backup_restore_delete(self):"},{"line_number":54,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":56,"context_line":"        self.client.wait_for_volume_status(self.volume[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FDuk%3D","line":53,"in_reply_to":"AAAASn%2F%2FNMk%3D","updated":"2013-09-12 19:01:24.000000000","message":"Done","commit_id":"1cdfd0972ace3795da80dd7d77f2c5c2c8fc4ea1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c73c4b03b8cca9e3b8da29a41ac18a0015ca2bc3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":53,"context_line":"    def test_volume_backup_create_restore_delete(self):"},{"line_number":54,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":56,"context_line":"        self.client.wait_for_volume_status(self.volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":57,"context_line":"        self.backups_client.wait_for_backup_status(backup[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F%2Fuw%3D","line":54,"updated":"2013-09-15 02:52:58.000000000","message":"I think an addCleanup() call for backup[\u0027id\u0027] is necessary.","commit_id":"577d2a688358d29b18a6c70eeef5746509abc8a4"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"93b8efb41d039c9e99ca72b998f1a3ee07ffd877","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":53,"context_line":"    def test_volume_backup_create_restore_delete(self):"},{"line_number":54,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":56,"context_line":"        self.client.wait_for_volume_status(self.volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":57,"context_line":"        self.backups_client.wait_for_backup_status(backup[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F9o4%3D","line":54,"in_reply_to":"AAAAS3%2F%2F%2Bp4%3D","updated":"2013-09-16 14:21:12.000000000","message":"Done","commit_id":"577d2a688358d29b18a6c70eeef5746509abc8a4"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"1196916b2ee6aef902a18e96f2be09ee29dcc352","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":52,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":53,"context_line":"    def test_volume_backup_create_restore_delete(self):"},{"line_number":54,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":56,"context_line":"        self.client.wait_for_volume_status(self.volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":57,"context_line":"        self.backups_client.wait_for_backup_status(backup[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F%2Bp4%3D","line":54,"in_reply_to":"AAAAS3%2F%2F%2Fuw%3D","updated":"2013-09-16 07:55:01.000000000","message":"thanks Ken\u0027ichi ; technically you\u0027re deleting the backup later but by using addCleanup we ensure it gets deleted if any assertion fails before that point\n\nsee the volume create_get_delete for reference","commit_id":"577d2a688358d29b18a6c70eeef5746509abc8a4"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"18cf42fa42a13e55fa6dbfb8cd0d40556969ae9c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2FsaY%3D","line":3,"updated":"2013-09-21 11:07:20.000000000","message":"Need to fix the copyright header here. (Should be OpenStack Foundation if you want to assign copyright and 2013)","commit_id":"72e1aff3b3b1c6cc2ab33de5e4147948ed2af2c7"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"c314cc8522842b0a2f2ef10701fab6218d5dfb4c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2Fncw%3D","line":3,"in_reply_to":"AAAAS3%2F%2FsaY%3D","updated":"2013-09-23 21:46:18.000000000","message":"Done","commit_id":"72e1aff3b3b1c6cc2ab33de5e4147948ed2af2c7"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"18cf42fa42a13e55fa6dbfb8cd0d40556969ae9c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(VolumesBackupsTest, cls).tearDownClass()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @classmethod"},{"line_number":48,"context_line":"    def _create_vol_and_wait_available(cls, size):"},{"line_number":49,"context_line":"        vol_name \u003d rand_name(\u0027Volume-\u0027)"},{"line_number":50,"context_line":"        resp, volume \u003d cls.client.create_volume(size\u003dsize,"},{"line_number":51,"context_line":"                                                display_name\u003dvol_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2FsaU%3D","line":48,"updated":"2013-09-21 11:07:20.000000000","message":"Is there a reason you can\u0027t use self.create_volume here instead? Which would also handle the cleanup in teardownclass as well","commit_id":"72e1aff3b3b1c6cc2ab33de5e4147948ed2af2c7"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"c314cc8522842b0a2f2ef10701fab6218d5dfb4c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(VolumesBackupsTest, cls).tearDownClass()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @classmethod"},{"line_number":48,"context_line":"    def _create_vol_and_wait_available(cls, size):"},{"line_number":49,"context_line":"        vol_name \u003d rand_name(\u0027Volume-\u0027)"},{"line_number":50,"context_line":"        resp, volume \u003d cls.client.create_volume(size\u003dsize,"},{"line_number":51,"context_line":"                                                display_name\u003dvol_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2Fnc4%3D","line":48,"in_reply_to":"AAAAS3%2F%2FsaU%3D","updated":"2013-09-23 21:46:18.000000000","message":"create_volume on it\u0027s own does not wait for the volume to be available.","commit_id":"72e1aff3b3b1c6cc2ab33de5e4147948ed2af2c7"},{"author":{"_account_id":8625,"name":"Anju Tiwari","username":"Anju5","inactive":true},"change_message_id":"abf15364d591362641ce0a193e2387152e9302b3","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":79,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":80,"context_line":"    def test_volume_backup_create_1G_restore_2G_delete(self):"},{"line_number":81,"context_line":"        \"\"\"Test restoring to a voluem larger than the original.\"\"\""},{"line_number":82,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":83,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":84,"context_line":"        self.addCleanup(self.backups_client.backup_delete,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FVvo%3D","line":81,"updated":"2013-11-09 03:35:19.000000000","message":"A typo error - voluem.","commit_id":"6a563089190ba1c5d1e08abde4c533f16bdaabe6"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"e66614a1316f9d47fae83612e8edbfc427b08fd0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    @stresstest(class_setup_per\u003d\u0027process\u0027)"},{"line_number":79,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":80,"context_line":"    def test_volume_backup_create_1G_restore_2G_delete(self):"},{"line_number":81,"context_line":"        \"\"\"Test restoring to a voluem larger than the original.\"\"\""},{"line_number":82,"context_line":"        resp, backup \u003d self.backups_client.backup_create(self.volume[\u0027id\u0027])"},{"line_number":83,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":84,"context_line":"        self.addCleanup(self.backups_client.backup_delete,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FPnE%3D","line":81,"in_reply_to":"AAAATn%2F%2FVvo%3D","updated":"2013-11-12 11:07:55.000000000","message":"Done","commit_id":"6a563089190ba1c5d1e08abde4c533f16bdaabe6"}],"tempest/services/volume/json/backups_client.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"dcb5358d0cf39975582db3c5ced6a3f4775e47f9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            resp, body \u003d self.get_backup(backup_id)"},{"line_number":85,"context_line":"            backup_status \u003d body[\u0027status\u0027]"},{"line_number":86,"context_line":"            if backup_status \u003d\u003d \u0027error\u0027:"},{"line_number":87,"context_line":"                raise exceptions.BackupBuildErrorException(backup_id\u003dbackup_id)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"            if int(time.time()) - start \u003e\u003d self.build_timeout:"},{"line_number":90,"context_line":"                message \u003d (\u0027Volume %s failed to reach %s status within \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FHRo%3D","line":87,"updated":"2013-09-11 19:42:41.000000000","message":"I think you have to add this into exceptions.py","commit_id":"1cdfd0972ace3795da80dd7d77f2c5c2c8fc4ea1"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"b6bc4a15d192c8856c041794f2e2d90687653aba","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            resp, body \u003d self.get_backup(backup_id)"},{"line_number":85,"context_line":"            backup_status \u003d body[\u0027status\u0027]"},{"line_number":86,"context_line":"            if backup_status \u003d\u003d \u0027error\u0027:"},{"line_number":87,"context_line":"                raise exceptions.BackupBuildErrorException(backup_id\u003dbackup_id)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"            if int(time.time()) - start \u003e\u003d self.build_timeout:"},{"line_number":90,"context_line":"                message \u003d (\u0027Volume %s failed to reach %s status within \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FDuo%3D","line":87,"in_reply_to":"AAAASn%2F%2FHRo%3D","updated":"2013-09-12 19:01:24.000000000","message":"Done","commit_id":"1cdfd0972ace3795da80dd7d77f2c5c2c8fc4ea1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c73c4b03b8cca9e3b8da29a41ac18a0015ca2bc3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def wait_for_backup_status(self, backup_id, status):"},{"line_number":76,"context_line":"        \"\"\"Waits for a Backup to reach a given status.\"\"\""},{"line_number":77,"context_line":"        resp, body \u003d self.get_backup(backup_id)"},{"line_number":78,"context_line":"        backup_name \u003d body[\u0027description\u0027]"},{"line_number":79,"context_line":"        backup_status \u003d body[\u0027status\u0027]"},{"line_number":80,"context_line":"        start \u003d int(time.time())"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F%2Fuc%3D","line":78,"updated":"2013-09-15 02:52:58.000000000","message":"s/description/display_name/","commit_id":"577d2a688358d29b18a6c70eeef5746509abc8a4"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"93b8efb41d039c9e99ca72b998f1a3ee07ffd877","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def wait_for_backup_status(self, backup_id, status):"},{"line_number":76,"context_line":"        \"\"\"Waits for a Backup to reach a given status.\"\"\""},{"line_number":77,"context_line":"        resp, body \u003d self.get_backup(backup_id)"},{"line_number":78,"context_line":"        backup_name \u003d body[\u0027description\u0027]"},{"line_number":79,"context_line":"        backup_status \u003d body[\u0027status\u0027]"},{"line_number":80,"context_line":"        start \u003d int(time.time())"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2F%2BJU%3D","line":78,"in_reply_to":"AAAAS3%2F%2F%2Fuc%3D","updated":"2013-09-16 14:21:12.000000000","message":"The backup API expects \u0027description\u0027 (the backup db api expects \u0027display_name\u0027).","commit_id":"577d2a688358d29b18a6c70eeef5746509abc8a4"}],"tempest/services/volume/json/volumes_client.py":[{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"ed4c49872d0cf3ab015dd3c196c7835c7d341d8b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            return True"},{"line_number":147,"context_line":"        return False"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def backup_create(self, volume_id, container\u003dNone, display_name\u003dNone,"},{"line_number":150,"context_line":"                      description\u003dNone):"},{"line_number":151,"context_line":"        \"\"\"Creates a backup of volume.\"\"\""},{"line_number":152,"context_line":"        post_body \u003d {\u0027volume_id\u0027: volume_id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQYs%3D","line":149,"updated":"2013-09-09 10:21:42.000000000","message":"Since all these functions are switchable would it make sense to create a new class and inherit from VolumesClientJSON? With that you could check volume_backup_enabled in __init__ and raise an exception.","commit_id":"fb0ac802751393e11852393b1cff11acb46c0ef5"}]}
