)]}'
{"tempest/api/volume/admin/test_volumes_backup.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9aef715b1f29869222bc9187b57e1662734ba077","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    @classmethod"},{"line_number":30,"context_line":"    def setUpClass(cls):"},{"line_number":31,"context_line":"        super(VolumesBackupsTest, cls).setUpClass()"},{"line_number":32,"context_line":"        if not cls.config.volume_feature_enabled.backup:"},{"line_number":33,"context_line":"            cls.tearDownClass()"},{"line_number":34,"context_line":"            raise cls.skipException(\"Cinder backup feature disabled\")"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2B85o%3D","line":32,"updated":"2014-01-20 14:02:46.000000000","message":"We need to change here like:\n\n from tempest import config\n \n CONF \u003d config.CONF\n \n (.... inside some class ...)\n \n if not CONF.volume_feature_enabled.backup:\n\nref: http://openstack.10931.n7.nabble.com/qa-changes-to-interacting-with-Tempest-config-td27732.html","commit_id":"9b9ea0c3b1ec6a6289493d45b5797b6563ec0056"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"f0e197a1bc0fe2e3333a488861b0ca6614ad26a5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    @classmethod"},{"line_number":30,"context_line":"    def setUpClass(cls):"},{"line_number":31,"context_line":"        super(VolumesBackupsTest, cls).setUpClass()"},{"line_number":32,"context_line":"        if not cls.config.volume_feature_enabled.backup:"},{"line_number":33,"context_line":"            cls.tearDownClass()"},{"line_number":34,"context_line":"            raise cls.skipException(\"Cinder backup feature disabled\")"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2B2Lc%3D","line":32,"in_reply_to":"AAAAUH%2F%2B85o%3D","updated":"2014-01-21 14:15:46.000000000","message":"thanks for the head up!","commit_id":"9b9ea0c3b1ec6a6289493d45b5797b6563ec0056"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9aef715b1f29869222bc9187b57e1662734ba077","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        super(VolumesBackupsTest, cls).tearDownClass()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def _create_vol_and_wait_available(cls):"},{"line_number":55,"context_line":"        vol_name \u003d data_utils.rand_name(\u0027Volume\u0027)"},{"line_number":56,"context_line":"        vol_clnt \u003d cls.volumes_adm_client"},{"line_number":57,"context_line":"        resp, volume \u003d vol_clnt.create_volume(size\u003d1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2B84A%3D","line":54,"updated":"2014-01-20 14:02:46.000000000","message":"How about using create_volume() in class BaseVolumeTest?\nThe code is the same as this implementation.\n\nor should create a volume by admin user?","commit_id":"9b9ea0c3b1ec6a6289493d45b5797b6563ec0056"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"f0e197a1bc0fe2e3333a488861b0ca6614ad26a5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        super(VolumesBackupsTest, cls).tearDownClass()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def _create_vol_and_wait_available(cls):"},{"line_number":55,"context_line":"        vol_name \u003d data_utils.rand_name(\u0027Volume\u0027)"},{"line_number":56,"context_line":"        vol_clnt \u003d cls.volumes_adm_client"},{"line_number":57,"context_line":"        resp, volume \u003d vol_clnt.create_volume(size\u003d1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2B2G8%3D","line":54,"in_reply_to":"AAAAUH%2F%2B84A%3D","updated":"2014-01-21 14:15:46.000000000","message":"good thinking! let\u0027s try, I think it shouldn\u0027t fail as long as I keep using the volume admin client in the test assertions, even if the volume is not created by an admin ... so I\u0027m going to use the base class helper ... I\u0027ll need to keep here the code to wait for the volume to become available though","commit_id":"9b9ea0c3b1ec6a6289493d45b5797b6563ec0056"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9aef715b1f29869222bc9187b57e1662734ba077","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return volume"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @classmethod"},{"line_number":64,"context_line":"    def _delete_vol_and_wait_deleted(cls, volume_id):"},{"line_number":65,"context_line":"        cls.volumes_adm_client.delete_volume(volume_id)"},{"line_number":66,"context_line":"        cls.volumes_adm_client.wait_for_resource_deletion(volume_id)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2B824%3D","line":64,"updated":"2014-01-20 14:02:46.000000000","message":"If using create_volume() of class BaseVolumeTest, this method would be unnecessary because clear_volumes() can remove the volume which is created with the create_volume() automatically.","commit_id":"9b9ea0c3b1ec6a6289493d45b5797b6563ec0056"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"f0e197a1bc0fe2e3333a488861b0ca6614ad26a5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return volume"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @classmethod"},{"line_number":64,"context_line":"    def _delete_vol_and_wait_deleted(cls, volume_id):"},{"line_number":65,"context_line":"        cls.volumes_adm_client.delete_volume(volume_id)"},{"line_number":66,"context_line":"        cls.volumes_adm_client.wait_for_resource_deletion(volume_id)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2B2EA%3D","line":64,"in_reply_to":"AAAAUH%2F%2B824%3D","updated":"2014-01-21 14:15:46.000000000","message":"Done","commit_id":"9b9ea0c3b1ec6a6289493d45b5797b6563ec0056"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"22d1cdbf5881c1cee155903a239292d42dcd56ce","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 2014 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BmDA%3D","line":1,"updated":"2014-01-24 01:38:26.000000000","message":"nit: if there is a chance for updating this patch, could you remove this \"vim\" header line? We have removed a lot of this line, and the patch for doing it is in the queue.\n\nhttps://review.openstack.org/#/c/68552/","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"a9042bc0f12816223f3ea52ac5e6e857a84fa134","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 2014 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BZpI%3D","line":1,"in_reply_to":"AAAAUH%2F%2BmDA%3D","updated":"2014-01-27 10:31:59.000000000","message":"Done","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"79e11d232b7627651b8ab3582299a58ca97b369f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":43,"context_line":"    def test_volume_backup_create_get_restore_delete(self):"},{"line_number":44,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":45,"context_line":"        bckp_clnt \u003d self.backups_adm_client"},{"line_number":46,"context_line":"        resp, backup \u003d bckp_clnt.create_backup(self.volume[\u0027id\u0027],"},{"line_number":47,"context_line":"                                               name\u003dbackup_name)"},{"line_number":48,"context_line":"        self.assertEqual(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BxMM%3D","line":45,"updated":"2014-01-22 10:44:26.000000000","message":"(very minor nitpick) Why not use a more explicit variable name, like backup_client? I think it\u0027d make the code a bit more readable.","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"3d623a0fe06e6402c92b8f4815be2f48abbb539b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":43,"context_line":"    def test_volume_backup_create_get_restore_delete(self):"},{"line_number":44,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":45,"context_line":"        bckp_clnt \u003d self.backups_adm_client"},{"line_number":46,"context_line":"        resp, backup \u003d bckp_clnt.create_backup(self.volume[\u0027id\u0027],"},{"line_number":47,"context_line":"                                               name\u003dbackup_name)"},{"line_number":48,"context_line":"        self.assertEqual(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BsXM%3D","line":45,"in_reply_to":"AAAAUH%2F%2Bsr0%3D","updated":"2014-01-23 04:11:37.000000000","message":"well, to be honest, I don\u0027t like backup_client either; it won\u0027t make obvious that this is a client with admin privileges; I would have left it unchanged as backups_adm_client but I had to shorten the line and so sacrificed some readability\n\ngiven you\u0027re already two people sharing that feeling, I\u0027ll update if anyone plusvote this or if I\u0027m asked to submit a new changeset, don\u0027t worry","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b6b47a7c1910d8737617905559e183b0ba1de4f8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":43,"context_line":"    def test_volume_backup_create_get_restore_delete(self):"},{"line_number":44,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":45,"context_line":"        bckp_clnt \u003d self.backups_adm_client"},{"line_number":46,"context_line":"        resp, backup \u003d bckp_clnt.create_backup(self.volume[\u0027id\u0027],"},{"line_number":47,"context_line":"                                               name\u003dbackup_name)"},{"line_number":48,"context_line":"        self.assertEqual(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Bsr0%3D","line":45,"in_reply_to":"AAAAUH%2F%2BxMM%3D","updated":"2014-01-23 02:28:07.000000000","message":"Nice idea, it makes more readable.","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6fdbb9740b41e723d383d7a27eb9563dda5983a7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                                                       \u0027available\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"@test.skip_because(bug\u003d\"1270589\")"},{"line_number":71,"context_line":"class VolumesBackupsTestXML(VolumesBackupsTest):"},{"line_number":72,"context_line":"    _interface \u003d \"xml\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2FiNs%3D","line":70,"updated":"2014-02-12 14:58:30.000000000","message":"I\u0027m not keen on this we don\u0027t allow tests to be added with skips. Even though the json is working I\u0027d say remove the xml until this bug is fixed.","commit_id":"196b92be51cbef6a46f36f14507a9305acdb69cb"}],"tempest/config.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6fdbb9740b41e723d383d7a27eb9563dda5983a7","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                help\u003d\"Runs Cinder multi-backend test (requires 2 backends)\"),"},{"line_number":388,"context_line":"    cfg.BoolOpt(\u0027backup\u0027,"},{"line_number":389,"context_line":"                default\u003dTrue,"},{"line_number":390,"context_line":"                help\u003d\u0027Runs Cinder volumes backup test (uses Swift as the \u0027"},{"line_number":391,"context_line":"                     \u0027default backend)\u0027),"},{"line_number":392,"context_line":"    cfg.ListOpt(\u0027api_extensions\u0027,"},{"line_number":393,"context_line":"                default\u003d[\u0027all\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2FiMk%3D","line":390,"updated":"2014-02-12 14:58:30.000000000","message":"This comment about swift bit is unnecessary. Tempest doesn\u0027t care what the backup backend is it should be transparent. So I don\u0027t think we need it.","commit_id":"196b92be51cbef6a46f36f14507a9305acdb69cb"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"2672b4073c0387eef8514cfc2cbe840da50e22a0","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                help\u003d\"Runs Cinder multi-backend test (requires 2 backends)\"),"},{"line_number":388,"context_line":"    cfg.BoolOpt(\u0027backup\u0027,"},{"line_number":389,"context_line":"                default\u003dTrue,"},{"line_number":390,"context_line":"                help\u003d\u0027Runs Cinder volumes backup test (uses Swift as the \u0027"},{"line_number":391,"context_line":"                     \u0027default backend)\u0027),"},{"line_number":392,"context_line":"    cfg.ListOpt(\u0027api_extensions\u0027,"},{"line_number":393,"context_line":"                default\u003d[\u0027all\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fhvw%3D","line":390,"in_reply_to":"AAAAUX%2F%2FiMk%3D","updated":"2014-02-12 15:42:21.000000000","message":"will do, thanks","commit_id":"196b92be51cbef6a46f36f14507a9305acdb69cb"}],"tempest/services/volume/json/backups_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"22d1cdbf5881c1cee155903a239292d42dcd56ce","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 2014 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BmC8%3D","line":1,"updated":"2014-01-24 01:38:26.000000000","message":"nit: ditto","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"db62f560b1105acc4cee9a1f7aaa37d58a137029","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common.rest_client import RestClient"},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":"from tempest import exceptions"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2B85I%3D","line":19,"updated":"2014-02-18 01:49:03.000000000","message":"here should be\n\n from tempest.common import rest_client\n\nfor importing a module, not class directly.","commit_id":"bc0602ebbf99083afa8d09389bf5f18803ba39a6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"db62f560b1105acc4cee9a1f7aaa37d58a137029","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if description:"},{"line_number":46,"context_line":"            post_body[\u0027description\u0027] \u003d description"},{"line_number":47,"context_line":"        post_body \u003d json.dumps({\u0027backup\u0027: post_body})"},{"line_number":48,"context_line":"        resp, body \u003d self.post(\u0027backups\u0027, post_body, self.headers)"},{"line_number":49,"context_line":"        body \u003d json.loads(body)"},{"line_number":50,"context_line":"        return resp, body[\u0027backup\u0027]"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2B85k%3D","line":48,"updated":"2014-02-18 01:49:03.000000000","message":"Now we don\u0027t need to specify self.headers because of Ie43d10affc981d3446b1296cf05ef595154276a9\n\nPlease see I28981738a9e7f39343cf530c2642315f0a5b22f2 also.","commit_id":"bc0602ebbf99083afa8d09389bf5f18803ba39a6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"db62f560b1105acc4cee9a1f7aaa37d58a137029","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        post_body \u003d {\u0027volume_id\u0027: volume_id}"},{"line_number":55,"context_line":"        post_body \u003d json.dumps({\u0027restore\u0027: post_body})"},{"line_number":56,"context_line":"        resp, body \u003d self.post(\u0027backups/%s/restore\u0027 % (backup_id), post_body,"},{"line_number":57,"context_line":"                               self.headers)"},{"line_number":58,"context_line":"        body \u003d json.loads(body)"},{"line_number":59,"context_line":"        return resp, body[\u0027restore\u0027]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2B85c%3D","line":57,"updated":"2014-02-18 01:49:03.000000000","message":"ditto","commit_id":"bc0602ebbf99083afa8d09389bf5f18803ba39a6"}],"tempest/services/volume/xml/backups_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"22d1cdbf5881c1cee155903a239292d42dcd56ce","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 2014 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BmC0%3D","line":1,"updated":"2014-01-24 01:38:26.000000000","message":"nit: ditto","commit_id":"70b70027c98733a7b476fcd3a801bed539c13c24"}]}
