)]}'
{"tempest/api/object_storage/base.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"be2d671d1deec2a9432ba56cfb35c7539f6248ad","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            cls.account_name \u003d data_utils.rand_name(name\u003d\u0027TestAccount\u0027)"},{"line_number":83,"context_line":"            base_url_no_auth \u003d \\"},{"line_number":84,"context_line":"                cls.config.object_storage.object_storage_endpoint + \u0027/\u0027 \\"},{"line_number":85,"context_line":"                + cls.account_name"},{"line_number":86,"context_line":"            cls.account_client.base_url \u003d base_url_no_auth"},{"line_number":87,"context_line":"            cls.custom_account_client.base_url \u003d base_url_no_auth"},{"line_number":88,"context_line":"            cls.container_client.base_url \u003d base_url_no_auth"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BDGU%3D","line":85,"updated":"2013-12-03 03:22:58.000000000","message":"We try to avoid \\ in openstack;\n\n    base_url_no_auth \u003d (\n        cls.config.object_storage.object_storage_endpoint + \u0027/\u0027 +\n        cls.account_name)\n\nwill work and addresses that.","commit_id":"a7350ff064f5d99281f0a9f768d4691bb31bcea3"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"2dfbbe496d36295440cae331d60b324d565d9037","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            cls.account_name \u003d data_utils.rand_name(name\u003d\u0027TestAccount\u0027)"},{"line_number":83,"context_line":"            base_url_no_auth \u003d \\"},{"line_number":84,"context_line":"                cls.config.object_storage.object_storage_endpoint + \u0027/\u0027 \\"},{"line_number":85,"context_line":"                + cls.account_name"},{"line_number":86,"context_line":"            cls.account_client.base_url \u003d base_url_no_auth"},{"line_number":87,"context_line":"            cls.custom_account_client.base_url \u003d base_url_no_auth"},{"line_number":88,"context_line":"            cls.container_client.base_url \u003d base_url_no_auth"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F99BY%3D","line":85,"in_reply_to":"AAAATn%2F%2BDGU%3D","updated":"2013-12-04 02:45:53.000000000","message":"Done","commit_id":"a7350ff064f5d99281f0a9f768d4691bb31bcea3"}],"tempest/api/object_storage/test_account_quotas.py":[{"author":{"_account_id":6847,"name":"Martina Kollarova","email":"mkollaro@gmail.com","username":"mkollaro"},"change_message_id":"c1b9e355e76cb354ed0c7508fa3c55b48ff8baf7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        cls.container_name \u003d data_utils.rand_name(name\u003d\"TestContainer\")"},{"line_number":36,"context_line":"        cls.container_client.create_container(cls.container_name)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        if cls.use_auth:"},{"line_number":39,"context_line":"            cls.data.setup_test_user()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"            cls.os_reselleradmin \u003d clients.Manager("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9OQE%3D","line":38,"updated":"2013-12-13 20:45:42.000000000","message":"How about using \"if not cls.use_auth: return\" and not indenting everything?","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"b13731fa666092749e7df90c51c168ff9dc6a16c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        cls.container_name \u003d data_utils.rand_name(name\u003d\"TestContainer\")"},{"line_number":36,"context_line":"        cls.container_client.create_container(cls.container_name)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        if cls.use_auth:"},{"line_number":39,"context_line":"            cls.data.setup_test_user()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"            cls.os_reselleradmin \u003d clients.Manager("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9Jvk%3D","line":38,"in_reply_to":"AAAATn%2F9OQE%3D","updated":"2013-12-16 10:42:35.000000000","message":"Done","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"}],"tempest/api/object_storage/test_crossdomain.py":[{"author":{"_account_id":6847,"name":"Martina Kollarova","email":"mkollaro@gmail.com","username":"mkollaro"},"change_message_id":"c1b9e355e76cb354ed0c7508fa3c55b48ff8baf7","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if self.use_auth:"},{"line_number":71,"context_line":"            # Turning http://.../v1/foobar into http://.../"},{"line_number":72,"context_line":"            client.base_url \u003d \"/\".join(client.base_url.split(\"/\")[:-2])"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            client.base_url \u003d \\"},{"line_number":75,"context_line":"                self.config.object_storage.object_storage_endpoint"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9OOs%3D","line":72,"updated":"2013-12-13 20:45:42.000000000","message":"There surely has to be some general way to find the base_url without knowing if auth is enabled.","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"b13731fa666092749e7df90c51c168ff9dc6a16c","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if self.use_auth:"},{"line_number":71,"context_line":"            # Turning http://.../v1/foobar into http://.../"},{"line_number":72,"context_line":"            client.base_url \u003d \"/\".join(client.base_url.split(\"/\")[:-2])"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            client.base_url \u003d \\"},{"line_number":75,"context_line":"                self.config.object_storage.object_storage_endpoint"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9JlY%3D","line":72,"in_reply_to":"AAAATn%2F9OOs%3D","updated":"2013-12-16 10:42:35.000000000","message":"Done. Setting base_url at the point of defining a new client in setUpClass in accordance with base.py","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"}],"tempest/api/object_storage/test_healthcheck.py":[{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"b13731fa666092749e7df90c51c168ff9dc6a16c","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.use_auth:"},{"line_number":55,"context_line":"            # Turning http://.../v1/foobar into http://.../"},{"line_number":56,"context_line":"            client.base_url \u003d \"/\".join(client.base_url.split(\"/\")[:-2])"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            client.base_url \u003d \\"},{"line_number":59,"context_line":"                self.config.object_storage.object_storage_endpoint"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9Jko%3D","line":56,"updated":"2013-12-16 10:42:35.000000000","message":"Done by the same way as in test_crossdomain.py","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"}],"tempest/api/object_storage/test_object_services.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"be2d671d1deec2a9432ba56cfb35c7539f6248ad","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import hashlib"},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import testtools"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.api.object_storage import base"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BDF4%3D","line":19,"updated":"2013-12-03 03:22:58.000000000","message":"Please add a blank line here: testtools is a third party lib, not in the standard library.","commit_id":"a7350ff064f5d99281f0a9f768d4691bb31bcea3"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"2dfbbe496d36295440cae331d60b324d565d9037","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import hashlib"},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import testtools"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.api.object_storage import base"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F99BQ%3D","line":19,"in_reply_to":"AAAATn%2F%2BDF4%3D","updated":"2013-12-04 02:45:53.000000000","message":"Done","commit_id":"a7350ff064f5d99281f0a9f768d4691bb31bcea3"},{"author":{"_account_id":6847,"name":"Martina Kollarova","email":"mkollaro@gmail.com","username":"mkollaro"},"change_message_id":"c1b9e355e76cb354ed0c7508fa3c55b48ff8baf7","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class PublicObjectTest(base.BaseObjectTest):"},{"line_number":346,"context_line":"    auth_available \u003d config.TempestConfig().object_storage.use_auth"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def setUp(self):"},{"line_number":349,"context_line":"        super(PublicObjectTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9OOE%3D","line":346,"updated":"2013-12-13 20:45:42.000000000","message":"I\u0027d prefer if you put this into setUp or __init__","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"b13731fa666092749e7df90c51c168ff9dc6a16c","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class PublicObjectTest(base.BaseObjectTest):"},{"line_number":346,"context_line":"    auth_available \u003d config.TempestConfig().object_storage.use_auth"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def setUp(self):"},{"line_number":349,"context_line":"        super(PublicObjectTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9JhQ%3D","line":346,"in_reply_to":"AAAATn%2F9OOE%3D","updated":"2013-12-16 10:42:35.000000000","message":"Thanks, but I stay this unmodified. I followed the way as the released code. Moreover, if this sentence is placed in setUp method, skipIf annotations like below end in failure.","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"}],"tempest/api/object_storage/test_object_temp_url.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"be2d671d1deec2a9432ba56cfb35c7539f6248ad","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import hashlib"},{"line_number":19,"context_line":"import hmac"},{"line_number":20,"context_line":"import testtools"},{"line_number":21,"context_line":"import time"},{"line_number":22,"context_line":"import urlparse"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BDFw%3D","line":20,"updated":"2013-12-03 03:22:58.000000000","message":"This should go in a new block between urlparse and the first tempest import - it\u0027s a third party library.","commit_id":"a7350ff064f5d99281f0a9f768d4691bb31bcea3"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"2dfbbe496d36295440cae331d60b324d565d9037","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import hashlib"},{"line_number":19,"context_line":"import hmac"},{"line_number":20,"context_line":"import testtools"},{"line_number":21,"context_line":"import time"},{"line_number":22,"context_line":"import urlparse"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F99BI%3D","line":20,"in_reply_to":"AAAATn%2F%2BDFw%3D","updated":"2013-12-04 02:45:53.000000000","message":"Done","commit_id":"a7350ff064f5d99281f0a9f768d4691bb31bcea3"}],"tempest/config.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"78cfa851cf07751f2563623b0ba02037b018d949","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                    \"enable creating containers\"),"},{"line_number":400,"context_line":"    cfg.BoolOpt(\u0027use_auth\u0027,"},{"line_number":401,"context_line":"                default\u003dTrue,"},{"line_number":402,"context_line":"                help\u003d\"Runs services with/without Identity API\"),"},{"line_number":403,"context_line":"    cfg.StrOpt(\u0027object_storage_endpoint\u0027,"},{"line_number":404,"context_line":"               default\u003d\u0027http://localhost:8080/v1\u0027,"},{"line_number":405,"context_line":"               help\u003d\"Endpoint URL of object storage set manually\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BON0%3D","line":402,"updated":"2013-11-28 18:21:46.000000000","message":"Since Tempest doesn\u0027t actually *run* any services, this is confusing. I think it would be clearer if it said:\n\n help\u003d\"Services under test are using the Identity API for authentication.\"\n\nor something like that.","commit_id":"12be53fc19a2665a6785585785e10ae14f5942ce"}],"tempest/services/object_storage/account_client.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"78cfa851cf07751f2563623b0ba02037b018d949","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                       remove_metadata_prefix\u003d\u0027X-Remove-Account-Meta-\u0027):"},{"line_number":30,"context_line":"        \"\"\""},{"line_number":31,"context_line":"        Create an account"},{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        url \u003d \u0027\u0027"},{"line_number":34,"context_line":"        if params:"},{"line_number":35,"context_line":"            url +\u003d \u0027?\u0026%s\u0027 % urllib.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BONs%3D","line":32,"updated":"2013-11-28 18:21:46.000000000","message":"Should be:\n\n \"\"\"Create an account.\"\"\" (PEP 257)","commit_id":"12be53fc19a2665a6785585785e10ae14f5942ce"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"78cfa851cf07751f2563623b0ba02037b018d949","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        url \u003d \u0027\u0027"},{"line_number":34,"context_line":"        if params:"},{"line_number":35,"context_line":"            url +\u003d \u0027?\u0026%s\u0027 % urllib.urlencode(params)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        headers \u003d {}"},{"line_number":38,"context_line":"        for key in metadata:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BONg%3D","line":35,"updated":"2013-11-28 18:21:46.000000000","message":"This creates an empty parameter:\n\n http://localhost/?\u0026foo\u003dbar\n\nIt should be\n\n http://localhost/foo\u003dbar\n\n- drop the \u0026.","commit_id":"12be53fc19a2665a6785585785e10ae14f5942ce"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"78cfa851cf07751f2563623b0ba02037b018d949","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def delete_account(self):"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        Delete an account"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        resp, body \u003d self.delete(\u0027\u0027)"},{"line_number":52,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BONo%3D","line":49,"updated":"2013-11-28 18:21:46.000000000","message":"Likewise.","commit_id":"12be53fc19a2665a6785585785e10ae14f5942ce"},{"author":{"_account_id":6847,"name":"Martina Kollarova","email":"mkollaro@gmail.com","username":"mkollaro"},"change_message_id":"c1b9e355e76cb354ed0c7508fa3c55b48ff8baf7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def create_account(self, data\u003dNone, params\u003dNone, metadata\u003d{},"},{"line_number":28,"context_line":"                       remove_metadata\u003d{}, metadata_prefix\u003d\u0027X-Account-Meta-\u0027,"},{"line_number":29,"context_line":"                       remove_metadata_prefix\u003d\u0027X-Remove-Account-Meta-\u0027):"},{"line_number":30,"context_line":"        \"\"\"Create an account.\"\"\""},{"line_number":31,"context_line":"        url \u003d \u0027\u0027"},{"line_number":32,"context_line":"        if params:"},{"line_number":33,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9OLA%3D","line":30,"updated":"2013-12-13 20:45:42.000000000","message":"So you use the same method for creating and deleting the account?\n\nAlso, this doesn\u0027t seem like a normal operation in Swift - the accounts are normally created and deleted externally. Shouldn\u0027t there be a warning that you should use it only if there is no other auth system?","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"b13731fa666092749e7df90c51c168ff9dc6a16c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def create_account(self, data\u003dNone, params\u003dNone, metadata\u003d{},"},{"line_number":28,"context_line":"                       remove_metadata\u003d{}, metadata_prefix\u003d\u0027X-Account-Meta-\u0027,"},{"line_number":29,"context_line":"                       remove_metadata_prefix\u003d\u0027X-Remove-Account-Meta-\u0027):"},{"line_number":30,"context_line":"        \"\"\"Create an account.\"\"\""},{"line_number":31,"context_line":"        url \u003d \u0027\u0027"},{"line_number":32,"context_line":"        if params:"},{"line_number":33,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9JgY%3D","line":30,"in_reply_to":"AAAATn%2F9OLA%3D","updated":"2013-12-16 10:42:35.000000000","message":"In fact, this code also can be used in testing bulk operation I263d903f14fe777153a543640a54464f93d6c008 (the name \"create_account\" may be unsuitable for bulk operations).","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"},{"author":{"_account_id":6847,"name":"Martina Kollarova","email":"mkollaro@gmail.com","username":"mkollaro"},"change_message_id":"c1b9e355e76cb354ed0c7508fa3c55b48ff8baf7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def delete_account(self):"},{"line_number":45,"context_line":"        \"\"\"Delete an account.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        resp, body \u003d self.delete(\u0027\u0027)"},{"line_number":48,"context_line":"        return resp, body"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def list_account_metadata(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9OME%3D","line":47,"updated":"2013-12-13 20:45:42.000000000","message":"huh? does this actually work?","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"b13731fa666092749e7df90c51c168ff9dc6a16c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def delete_account(self):"},{"line_number":45,"context_line":"        \"\"\"Delete an account.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        resp, body \u003d self.delete(\u0027\u0027)"},{"line_number":48,"context_line":"        return resp, body"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def list_account_metadata(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9Jfs%3D","line":47,"in_reply_to":"AAAATn%2F9OME%3D","updated":"2013-12-16 10:42:35.000000000","message":"Yes, it works as following methods do (a parameter of following methods is also blank string).","commit_id":"59d1f1c497190585f9bee310f5077fc1eaff14d4"}]}
