)]}'
{"smaug/tests/fullstack/smaug_objects.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"7935682dff5ba0ed5c7a5b8474f3633d8c3c8ff1","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                                    target,"},{"line_number":125,"context_line":"                                                    parameters)"},{"line_number":126,"context_line":"        self.id \u003d restore[\u0027id\u0027]"},{"line_number":127,"context_line":"        sleep(60)"},{"line_number":128,"context_line":"        utils.wait_until_true(partial(self._restore_status, \u0027success\u0027),"},{"line_number":129,"context_line":"                              timeout\u003dtimeout, sleep\u003dLONG_SLEEP)"},{"line_number":130,"context_line":"        return self.id"}],"source_content_type":"text/x-python","patch_set":15,"id":"3aaa91ec_07a12cf8","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":17},"updated":"2016-06-26 07:30:25.000000000","message":"why do you need sleep if you have wait_until_true ?","commit_id":"a6e9fe231977a4a77584844b46855f7a6a3dc24a"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"d1aba0ed5ee9e3cedff9a9887b5a1855f55c9e32","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                                    target,"},{"line_number":125,"context_line":"                                                    parameters)"},{"line_number":126,"context_line":"        self.id \u003d restore[\u0027id\u0027]"},{"line_number":127,"context_line":"        sleep(60)"},{"line_number":128,"context_line":"        utils.wait_until_true(partial(self._restore_status, \u0027success\u0027),"},{"line_number":129,"context_line":"                              timeout\u003dtimeout, sleep\u003dLONG_SLEEP)"},{"line_number":130,"context_line":"        return self.id"}],"source_content_type":"text/x-python","patch_set":15,"id":"3aaa91ec_986616b9","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":17},"in_reply_to":"3aaa91ec_07a12cf8","updated":"2016-06-27 01:08:04.000000000","message":"When I was testing the restore, I found a problem. Create a restore is asynchronous and direct return \u0027success\u0027, _restore_status query to success will directly returns \u0027True\u0027, Utils.wait_until_true will quit, but in fact the background is not to create new volume, and then Self.cinder_client.volumes.list query volumes, the number of volumes is the same with before restore, then the assertion failure. so, i add \u0027sleep\u0027 between restore.create and wait_until_true, it works. I think we need to add a field (the volume ID) to the return of the restore.create, for polling the volume status.","commit_id":"a6e9fe231977a4a77584844b46855f7a6a3dc24a"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d036e690cf8059667e1a8df413d4689d468202da","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                                    target,"},{"line_number":125,"context_line":"                                                    parameters)"},{"line_number":126,"context_line":"        self.id \u003d restore[\u0027id\u0027]"},{"line_number":127,"context_line":"        sleep(60)"},{"line_number":128,"context_line":"        utils.wait_until_true(partial(self._restore_status, \u0027success\u0027),"},{"line_number":129,"context_line":"                              timeout\u003dtimeout, sleep\u003dLONG_SLEEP)"},{"line_number":130,"context_line":"        return self.id"}],"source_content_type":"text/x-python","patch_set":15,"id":"3aaa91ec_a692ba49","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":17},"in_reply_to":"3aaa91ec_986616b9","updated":"2016-06-27 13:34:32.000000000","message":"I am not sure why restore_status return true when it shouldn\u0027t.\nI think that we should fix restore_status to return the correct return code","commit_id":"a6e9fe231977a4a77584844b46855f7a6a3dc24a"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"317355ee5337563cb285065f38e177948452429d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                                    target,"},{"line_number":125,"context_line":"                                                    parameters)"},{"line_number":126,"context_line":"        self.id \u003d restore[\u0027id\u0027]"},{"line_number":127,"context_line":"        sleep(60)"},{"line_number":128,"context_line":"        utils.wait_until_true(partial(self._restore_status, \u0027success\u0027),"},{"line_number":129,"context_line":"                              timeout\u003dtimeout, sleep\u003dLONG_SLEEP)"},{"line_number":130,"context_line":"        return self.id"}],"source_content_type":"text/x-python","patch_set":15,"id":"3aaa91ec_ba258a0b","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":17},"in_reply_to":"3aaa91ec_a692ba49","updated":"2016-06-28 02:08:02.000000000","message":"Yes, I am agree with you,but I can only use “sleep” for a while before fix it.","commit_id":"a6e9fe231977a4a77584844b46855f7a6a3dc24a"}],"smaug/tests/fullstack/test_restores.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f9dc24241af4b3770faeec329ea3968dcbcd0daa","unresolved":false,"context_lines":[{"line_number":19,"context_line":"class RestoresTest(smaug_base.SmaugBaseTest):"},{"line_number":20,"context_line":"    \"\"\"Test Restores operation \"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create_plan(self, provider_id, volume_id):"},{"line_number":23,"context_line":"        plan1 \u003d self.smaug_client.plans.create("},{"line_number":24,"context_line":"            \"My checkpoint app1\","},{"line_number":25,"context_line":"            provider_id,"},{"line_number":26,"context_line":"            [{\"type\": \"OS::Cinder::Volume\","},{"line_number":27,"context_line":"              \"name\": \"fake_name1\","},{"line_number":28,"context_line":"              \"id\": volume_id}],"},{"line_number":29,"context_line":"            {\"OS::Nova::Server\": {\"consistency\": \"os\"}})"},{"line_number":30,"context_line":"        return plan1"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def check_volume_status(self, volume_id):"},{"line_number":33,"context_line":"        volume \u003d self.cinder_client.volumes.get(volume_id)"},{"line_number":34,"context_line":"        if hasattr(volume, \"status\"):"},{"line_number":35,"context_line":"            if \"available\" \u003d\u003d volume.status:"},{"line_number":36,"context_line":"                return True"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                return False"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            return False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_checkpoint(self, provider_id, plan_id, volume_id):"},{"line_number":43,"context_line":"        checkpoint \u003d self.smaug_client.checkpoints.create(provider_id, plan_id)"},{"line_number":44,"context_line":"        sleep(15)"},{"line_number":45,"context_line":"        utils.wait_until_true("},{"line_number":46,"context_line":"            lambda: self.check_volume_status(volume_id),"},{"line_number":47,"context_line":"            timeout\u003d320,"},{"line_number":48,"context_line":"            sleep\u003d10,"},{"line_number":49,"context_line":"            exception\u003dException(\"Create Checkpoint Failed.\")"},{"line_number":50,"context_line":"        )"},{"line_number":51,"context_line":"        # wait for sync"},{"line_number":52,"context_line":"        sleep(90)"},{"line_number":53,"context_line":"        return checkpoint"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def delete_checkpoint(self, provider_id, checkpoint_id):"},{"line_number":56,"context_line":"        self.smaug_client.checkpoints.delete(provider_id, checkpoint_id)"},{"line_number":57,"context_line":"        sleep(20)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def create_restore(self, provider_id, checkpoint_id,"},{"line_number":60,"context_line":"                       restore_target, parameters):"},{"line_number":61,"context_line":"        restore \u003d self.smaug_client.restores.create(provider_id,"},{"line_number":62,"context_line":"                                                    checkpoint_id,"},{"line_number":63,"context_line":"                                                    restore_target,"},{"line_number":64,"context_line":"                                                    parameters)"},{"line_number":65,"context_line":"        sleep(75)"},{"line_number":66,"context_line":"        return restore"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_restore_create(self):"},{"line_number":69,"context_line":"        providers \u003d self.provider_list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_727ac289","line":66,"range":{"start_line":22,"start_character":0,"end_line":66,"end_character":22},"updated":"2016-06-13 10:21:36.000000000","message":"this area seems to be common with https://review.openstack.org/326946\ncould you refactor it into smaug_base.py, or into a separate, utility class?\n\n(also, wait for statuses instead of sleep())","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"d544f41b7596f2ea783558ba88d31724bfb8832c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"class RestoresTest(smaug_base.SmaugBaseTest):"},{"line_number":20,"context_line":"    \"\"\"Test Restores operation \"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create_plan(self, provider_id, volume_id):"},{"line_number":23,"context_line":"        plan1 \u003d self.smaug_client.plans.create("},{"line_number":24,"context_line":"            \"My checkpoint app1\","},{"line_number":25,"context_line":"            provider_id,"},{"line_number":26,"context_line":"            [{\"type\": \"OS::Cinder::Volume\","},{"line_number":27,"context_line":"              \"name\": \"fake_name1\","},{"line_number":28,"context_line":"              \"id\": volume_id}],"},{"line_number":29,"context_line":"            {\"OS::Nova::Server\": {\"consistency\": \"os\"}})"},{"line_number":30,"context_line":"        return plan1"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def check_volume_status(self, volume_id):"},{"line_number":33,"context_line":"        volume \u003d self.cinder_client.volumes.get(volume_id)"},{"line_number":34,"context_line":"        if hasattr(volume, \"status\"):"},{"line_number":35,"context_line":"            if \"available\" \u003d\u003d volume.status:"},{"line_number":36,"context_line":"                return True"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                return False"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            return False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_checkpoint(self, provider_id, plan_id, volume_id):"},{"line_number":43,"context_line":"        checkpoint \u003d self.smaug_client.checkpoints.create(provider_id, plan_id)"},{"line_number":44,"context_line":"        sleep(15)"},{"line_number":45,"context_line":"        utils.wait_until_true("},{"line_number":46,"context_line":"            lambda: self.check_volume_status(volume_id),"},{"line_number":47,"context_line":"            timeout\u003d320,"},{"line_number":48,"context_line":"            sleep\u003d10,"},{"line_number":49,"context_line":"            exception\u003dException(\"Create Checkpoint Failed.\")"},{"line_number":50,"context_line":"        )"},{"line_number":51,"context_line":"        # wait for sync"},{"line_number":52,"context_line":"        sleep(90)"},{"line_number":53,"context_line":"        return checkpoint"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def delete_checkpoint(self, provider_id, checkpoint_id):"},{"line_number":56,"context_line":"        self.smaug_client.checkpoints.delete(provider_id, checkpoint_id)"},{"line_number":57,"context_line":"        sleep(20)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def create_restore(self, provider_id, checkpoint_id,"},{"line_number":60,"context_line":"                       restore_target, parameters):"},{"line_number":61,"context_line":"        restore \u003d self.smaug_client.restores.create(provider_id,"},{"line_number":62,"context_line":"                                                    checkpoint_id,"},{"line_number":63,"context_line":"                                                    restore_target,"},{"line_number":64,"context_line":"                                                    parameters)"},{"line_number":65,"context_line":"        sleep(75)"},{"line_number":66,"context_line":"        return restore"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_restore_create(self):"},{"line_number":69,"context_line":"        providers \u003d self.provider_list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_9773b97f","line":66,"range":{"start_line":22,"start_character":0,"end_line":66,"end_character":22},"in_reply_to":"7aa08908_727ac289","updated":"2016-06-14 01:49:08.000000000","message":"yes,i think so. i\u0027ll change it.","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"ec14cf924ac68ef3b7c65b43f2befc7c1c576aa1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"class RestoresTest(smaug_base.SmaugBaseTest):"},{"line_number":20,"context_line":"    \"\"\"Test Restores operation \"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create_plan(self, provider_id, volume_id):"},{"line_number":23,"context_line":"        plan1 \u003d self.smaug_client.plans.create("},{"line_number":24,"context_line":"            \"My checkpoint app1\","},{"line_number":25,"context_line":"            provider_id,"},{"line_number":26,"context_line":"            [{\"type\": \"OS::Cinder::Volume\","},{"line_number":27,"context_line":"              \"name\": \"fake_name1\","},{"line_number":28,"context_line":"              \"id\": volume_id}],"},{"line_number":29,"context_line":"            {\"OS::Nova::Server\": {\"consistency\": \"os\"}})"},{"line_number":30,"context_line":"        return plan1"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def check_volume_status(self, volume_id):"},{"line_number":33,"context_line":"        volume \u003d self.cinder_client.volumes.get(volume_id)"},{"line_number":34,"context_line":"        if hasattr(volume, \"status\"):"},{"line_number":35,"context_line":"            if \"available\" \u003d\u003d volume.status:"},{"line_number":36,"context_line":"                return True"},{"line_number":37,"context_line":"            else:"},{"line_number":38,"context_line":"                return False"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            return False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def create_checkpoint(self, provider_id, plan_id, volume_id):"},{"line_number":43,"context_line":"        checkpoint \u003d self.smaug_client.checkpoints.create(provider_id, plan_id)"},{"line_number":44,"context_line":"        sleep(15)"},{"line_number":45,"context_line":"        utils.wait_until_true("},{"line_number":46,"context_line":"            lambda: self.check_volume_status(volume_id),"},{"line_number":47,"context_line":"            timeout\u003d320,"},{"line_number":48,"context_line":"            sleep\u003d10,"},{"line_number":49,"context_line":"            exception\u003dException(\"Create Checkpoint Failed.\")"},{"line_number":50,"context_line":"        )"},{"line_number":51,"context_line":"        # wait for sync"},{"line_number":52,"context_line":"        sleep(90)"},{"line_number":53,"context_line":"        return checkpoint"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def delete_checkpoint(self, provider_id, checkpoint_id):"},{"line_number":56,"context_line":"        self.smaug_client.checkpoints.delete(provider_id, checkpoint_id)"},{"line_number":57,"context_line":"        sleep(20)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def create_restore(self, provider_id, checkpoint_id,"},{"line_number":60,"context_line":"                       restore_target, parameters):"},{"line_number":61,"context_line":"        restore \u003d self.smaug_client.restores.create(provider_id,"},{"line_number":62,"context_line":"                                                    checkpoint_id,"},{"line_number":63,"context_line":"                                                    restore_target,"},{"line_number":64,"context_line":"                                                    parameters)"},{"line_number":65,"context_line":"        sleep(75)"},{"line_number":66,"context_line":"        return restore"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_restore_create(self):"},{"line_number":69,"context_line":"        providers \u003d self.provider_list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_d75261dd","line":66,"range":{"start_line":22,"start_character":0,"end_line":66,"end_character":22},"in_reply_to":"7aa08908_727ac289","updated":"2016-06-14 01:49:00.000000000","message":"yes,i think so. i\u0027ll change it.","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f9dc24241af4b3770faeec329ea3968dcbcd0daa","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        plan \u003d self.create_plan(provider_id, volume_id)"},{"line_number":74,"context_line":"        plan_id \u003d plan.get(\"id\")"},{"line_number":75,"context_line":"        checkpoint \u003d self.create_checkpoint(provider_id, plan_id, volume_id)"},{"line_number":76,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":77,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":78,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":79,"context_line":"        self.create_restore(provider_id, checkpoint[\u0027id\u0027],"},{"line_number":80,"context_line":"                            restore_target, parameters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_329afa6e","line":77,"range":{"start_line":76,"start_character":0,"end_line":77,"end_character":45},"updated":"2016-06-13 10:21:36.000000000","message":"refactor into a different function?","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"d544f41b7596f2ea783558ba88d31724bfb8832c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        plan \u003d self.create_plan(provider_id, volume_id)"},{"line_number":74,"context_line":"        plan_id \u003d plan.get(\"id\")"},{"line_number":75,"context_line":"        checkpoint \u003d self.create_checkpoint(provider_id, plan_id, volume_id)"},{"line_number":76,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":77,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":78,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":79,"context_line":"        self.create_restore(provider_id, checkpoint[\u0027id\u0027],"},{"line_number":80,"context_line":"                            restore_target, parameters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_7770cd72","line":77,"range":{"start_line":76,"start_character":0,"end_line":77,"end_character":45},"in_reply_to":"7aa08908_329afa6e","updated":"2016-06-14 01:49:08.000000000","message":"ok","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"ec14cf924ac68ef3b7c65b43f2befc7c1c576aa1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        plan \u003d self.create_plan(provider_id, volume_id)"},{"line_number":74,"context_line":"        plan_id \u003d plan.get(\"id\")"},{"line_number":75,"context_line":"        checkpoint \u003d self.create_checkpoint(provider_id, plan_id, volume_id)"},{"line_number":76,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":77,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":78,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":79,"context_line":"        self.create_restore(provider_id, checkpoint[\u0027id\u0027],"},{"line_number":80,"context_line":"                            restore_target, parameters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_f7631daf","line":77,"range":{"start_line":76,"start_character":0,"end_line":77,"end_character":45},"in_reply_to":"7aa08908_329afa6e","updated":"2016-06-14 01:49:00.000000000","message":"ok","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f9dc24241af4b3770faeec329ea3968dcbcd0daa","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":77,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":78,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":79,"context_line":"        self.create_restore(provider_id, checkpoint[\u0027id\u0027],"},{"line_number":80,"context_line":"                            restore_target, parameters)"},{"line_number":81,"context_line":"        self.delete_checkpoint(provider_id, checkpoint[\u0027id\u0027])"},{"line_number":82,"context_line":"        self.smaug_client.plans.delete(plan_id)"},{"line_number":83,"context_line":"        self.delete_volume(volume_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_b2854ad0","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":55},"updated":"2016-06-13 10:21:36.000000000","message":"verify that restore completed successfully?","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"ec14cf924ac68ef3b7c65b43f2befc7c1c576aa1","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":77,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":78,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":79,"context_line":"        self.create_restore(provider_id, checkpoint[\u0027id\u0027],"},{"line_number":80,"context_line":"                            restore_target, parameters)"},{"line_number":81,"context_line":"        self.delete_checkpoint(provider_id, checkpoint[\u0027id\u0027])"},{"line_number":82,"context_line":"        self.smaug_client.plans.delete(plan_id)"},{"line_number":83,"context_line":"        self.delete_volume(volume_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_97c5798f","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":55},"in_reply_to":"7aa08908_b2854ad0","updated":"2016-06-14 01:49:00.000000000","message":"Next step is verify,this time \u0027sleep\u0027 in stead of \u0027verify\u0027.","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"d544f41b7596f2ea783558ba88d31724bfb8832c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":77,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":78,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":79,"context_line":"        self.create_restore(provider_id, checkpoint[\u0027id\u0027],"},{"line_number":80,"context_line":"                            restore_target, parameters)"},{"line_number":81,"context_line":"        self.delete_checkpoint(provider_id, checkpoint[\u0027id\u0027])"},{"line_number":82,"context_line":"        self.smaug_client.plans.delete(plan_id)"},{"line_number":83,"context_line":"        self.delete_volume(volume_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_d769c18d","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":55},"in_reply_to":"7aa08908_b2854ad0","updated":"2016-06-14 01:49:08.000000000","message":"Next step is verify,this time \u0027sleep\u0027 in stead of \u0027verify\u0027.","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f9dc24241af4b3770faeec329ea3968dcbcd0daa","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        plan \u003d self.create_plan(provider_id, volume_id)"},{"line_number":91,"context_line":"        plan_id \u003d plan.get(\"id\")"},{"line_number":92,"context_line":"        checkpoint \u003d self.create_checkpoint(provider_id, plan_id, volume_id)"},{"line_number":93,"context_line":"        url \u003d self.keystone_endpoint[0:-9]"},{"line_number":94,"context_line":"        restore_target \u003d url + r\":35357/v2.0\""},{"line_number":95,"context_line":"        parameters \u003d {\"username\": \"admin\", \"password\": \"password\"}"},{"line_number":96,"context_line":"        restore_res \u003d self.create_restore(provider_id,"},{"line_number":97,"context_line":"                                          checkpoint[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_b2842a0b","line":94,"range":{"start_line":93,"start_character":0,"end_line":94,"end_character":45},"updated":"2016-06-13 10:21:36.000000000","message":"ditto","commit_id":"148687f5e8c76067e525b2efc6232d8ae57181cb"}]}
